在不使用联接的情况下获取SQL中的孙记录

如何解决在不使用联接的情况下获取SQL中的孙记录

我有三个表:

  1. ParentAccount
  2. 单位
  3. 发票

ParentAccount记录可以具有多个单位(即,单位是ParentAccount的子记录)。然后,每个单位记录可以具有多个发票(即,发票是单位的子记录)。

我想编写一个SQL查询,该查询将返回与特定PersonAccount的所有单位相关联的所有发票。例如。莎拉·史密斯(Sarah Smith)是一个PersonAccount。莎拉拥有2个单位。每个单位都有2张发票。我希望能够退回与Sarah拥有的单位相关的所有发票(因此,在我刚才给出的示例中,这4张发票)。

下面的SQL语句可以很好地实现此目的,但是我使用的平台不允许使用“ Join”。有没有一种方法可以在嵌套查询的下面以另一种方式编写代码?谢谢。

SELECT invoices.invoiceNumber 
FROM PersonAccount 
INNER JOIN units ON units.PersonID = PersonAccount.PersonID 
INNER JOIN invoices ON invoices.unitsId = units.unitsId;

解决方法

您似乎想要:

import numpy as np
import cv2
from colorthief import ColorThief
import os,os.path
import time

t0 = time.clock()

current_path = "/Color_detection/"
folder = os.path.join(current_path,'toprocess')
choose_write_folder = os.path.join(current_path,'processed')
edgeDetector = cv2.ximgproc.createStructuredEdgeDetection("model.yml")
count_file = 1

def filterOutSaltPepperNoise(edgeImg):
        # Get rid of salt & pepper noise.
        count = 0
        lastMedian = edgeImg
        median = cv2.medianBlur(edgeImg,5)
        while not np.array_equal(lastMedian,median):
            # get those pixels that gets zeroed out
            zeroed = np.invert(np.logical_and(median,edgeImg))
            edgeImg[zeroed] = 0

            count = count + 1
            if count > 70:
                break
            lastMedian = median
            median = cv2.medianBlur(edgeImg,5)

def findSignificantContour(edgeImg):
        image,contours,hierarchy = cv2.findContours(
            edgeImg,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE
        )
        # Find level 1 contours
        level1Meta = []
        for contourIndex,tupl in enumerate(hierarchy[0]):
            # Each array is in format (Next,Prev,First child,Parent)
            # Filter the ones without parent
            if tupl[3] == -1:
                tupl = np.insert(tupl.copy(),[contourIndex])
                level1Meta.append(tupl)

        # From among them,find the contours with large surface area.
        contoursWithArea = []
        for tupl in level1Meta:
            contourIndex = tupl[0]
            contour = contours[contourIndex]
            area = cv2.contourArea(contour)
            contoursWithArea.append([contour,area,contourIndex])
            
        contoursWithArea.sort(key=lambda meta: meta[1],reverse=True)
        largestContour = contoursWithArea[0][0]
        return largestContour

def remove_background(im):
    blurred = cv2.GaussianBlur(im,(5,5),0)
    blurred_float = blurred.astype(np.float32) / 255.0
    edges = edgeDetector.detectEdges(blurred_float) * 255.0
    #cv2.imwrite('edge-raw.jpg',edges)

    edges_8u = np.asarray(edges,np.uint8)
    filterOutSaltPepperNoise(edges_8u)
    #cv2.imwrite('edge.jpg',edges_8u)

    contour = findSignificantContour(edges_8u)
    # Draw the contour on the original image
    contourImg = np.copy(im)
    cv2.drawContours(contourImg,[contour],(0,255,0),2,cv2.LINE_AA,maxLevel=1)
    #cv2.imwrite('contour.jpg',contourImg)

    mask = np.zeros_like(edges_8u)
    cv2.fillPoly(mask,255)

    # calculate sure foreground area by dilating the mask
    mapFg = cv2.erode(mask,np.ones((5,np.uint8),iterations=10)

    # mark inital mask as "probably background"
    # and mapFg as sure foreground
    trimap = np.copy(mask)
    trimap[mask == 0] = cv2.GC_BGD
    trimap[mask == 255] = cv2.GC_PR_BGD
    trimap[mapFg == 255] = cv2.GC_FGD

    # visualize trimap
    trimap_print = np.copy(trimap)
    trimap_print[trimap_print == cv2.GC_PR_BGD] = 128
    trimap_print[trimap_print == cv2.GC_FGD] = 255
    #cv2.imwrite('trimap.png',trimap_print)

    # run grabcut
    bgdModel = np.zeros((1,65),np.float64)
    fgdModel = np.zeros((1,np.float64)
    rect = (0,mask.shape[0] - 1,mask.shape[1] - 1)
    cv2.grabCut(src,trimap,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_MASK)

    # create mask again
    mask2 = np.where(
        (trimap == cv2.GC_FGD) | (trimap == cv2.GC_PR_FGD),0
        ).astype('uint8')
    #cv2.imwrite('mask2.jpg',mask2)

    contour2 = findSignificantContour(mask2)
    mask3 = np.zeros_like(mask2)
    cv2.fillPoly(mask3,[contour2],255)

    # blended alpha cut-out
    mask3 = np.repeat(mask3[:,:,np.newaxis],3,axis=2)
    mask4 = cv2.GaussianBlur(mask3,(3,3),0)
    alpha = mask4.astype(float) * 1.1  # making blend stronger
    alpha[mask3 > 0] = 255
    alpha[alpha > 255] = 255
    alpha = alpha.astype(float)

    foreground = np.copy(im).astype(float)
    foreground[mask4 == 0] = 0
    background = np.ones_like(foreground,dtype=float) * 255

    #cv2.imwrite('foreground.png',foreground)
    #cv2.imwrite('background.png',background)
    #cv2.imwrite('alpha.png',alpha)

    # Normalize the alpha mask to keep intensity between 0 and 1
    alpha = alpha / 255.0
    # Multiply the foreground with the alpha matte
    foreground = cv2.multiply(alpha,foreground)
    # Multiply the background with ( 1 - alpha )
    background = cv2.multiply(1.0 - alpha,background)
    # Add the masked foreground and background.
    return cv2.add(foreground,background)
    

for filename in os.listdir(folder):
    img = cv2.imread((os.path.join(folder,filename)))
    #src = cv2.imread(filename,1)
    src = cv2.resize(img,(80,80),cv2.INTER_AREA)
    
    cutout = remove_background(src)

    image_name_to_write = (os.path.join(choose_write_folder,f'image{count_file}.jpg'))

    # image file is written using cv2.imwrite function
    write_images = cv2.imwrite(image_name_to_write,cutout)
    
    count_file = count_file + 1

    # get the dominant color
    new_image = cv2.imread(image_name_to_write)
    color_thief = ColorThief(image_name_to_write)
    
    dominant_color = color_thief.get_color(quality=5)

    dict_color_value = {"Black": [{"upper": [75,75,80],"lower": [0,0],"label":[0,0]}],#"Black in light": [{"upper": [115,115,120],"lower": [90,90,90],"White": [{"upper": [255,255],"lower": [235,230,225],"label":[255,255]}],"Red": [{"upper": [255,40,40],"lower": [161,"Brown": [{"upper": [145,100,"lower": [70,20,"label":[42,42,165]}],"Dark Teal": [{"upper": [60,145,145],128,128]}],"Teal": [{"upper": [235,235,230],"lower": [125,185,185],"label": [155,215,215]}],"Dark Gray": [{"upper": [125,125,125],"lower": [65,65,70],"label":[128,"Light Gray": [{"upper": [245,245,240],"Gray": [{"upper": [255,"lower": [205,205,200],"Dark Red": [{"upper": [255,195],"lower": [185,"Red Wine": [{"upper": [255,135],"lower": [165,85],"Red Maroon": [{"upper": [95,95,65],"lower": [45,45,35],"Green": [{"upper": [95,105],165,#"Green": [{"upper": [105,55],"Dark Green": [{"upper": [95,155,80,25],"Light Green": [{"upper": [255,235],"lower": [230,215],"Orange": [{"upper": [255,"lower": [220,"Light Orange": [{"upper": [245,210],"lower": [200,200,"Yellow": [{"upper": [255,100],"lower": [225,"Bold Yellow": [{"upper": [95,60,45],"Blue": [{"upper": [85,"Coban Blue": [{"upper": [75,175],25,"Velocity Blue": [{"upper": [215,225,"lower": [140,"Royal Blue": [{"upper": [25,35,"Electric Blue": [{"upper": [55,"Sky Blue": [{"upper": [155,"lower": [105,190],"Dark Blue": [{"upper": [25,115],"Police Strobe Blue": [{"upper": [55,195,"Ocean Blue": [{"upper": [35,175,"Light Purple": [{"upper": [155,205],55,155]}],"Purple": [{"upper": [195,"lower": [135,10,225]}],"Dark Purple": [{"upper": [135,155],85]}],"Royal Purple": [{"upper": [234,226]}],"Pink": [{"upper": [255,"lower": [195,100]}],"Light Pink": [{"upper": [255,190,125]}],}

    image_hsv = cv2.cvtColor(new_image,cv2.COLOR_BGR2HSV)

    i = 0
    dom_color = ["" for x in range(2)]    
    for color,list_values in dict_color_value.items():
        mask0 = np.zeros(image_hsv.shape[:2])
        
        for values in list_values:
            hsv_upper = np.array(values["upper"])
            hsv_lower = np.array(values["lower"])
            #print(hsv_lower,hsv_upper,image_hsv.shape,mask.shape)
            color_mask = cv2.inRange(image_hsv,hsv_lower,hsv_upper)

        #print(dominant_color)

        if i < 2:
            if dominant_color[0] <= hsv_upper[0] and dominant_color[0] >= hsv_lower[0] and dominant_color[1] <= hsv_upper[1] and dominant_color[1] >= hsv_lower[1] and dominant_color[2] <= hsv_upper[2] and dominant_color[2] >= hsv_lower[2]:
                dom_color[i] = color
                i = i + 1
        
    print(dominant_color)
    if i == 1:
        print(f"Image {filename} has dominant color is {dom_color[0]}")
    else:
        print(f"Image {filename} has 2 possible dominant colors are {dom_color}")

t1 = time.clock() - t0
print(t1-t0)
,

Salesforce SOQL具有“联接”,但是您将它们写成更面向对象的方式。您可以使用点使关系“向上”。像这样

SELECT Id,Name
FROM Invoice__c
WHERE Unit__r.Account.Name = 'Sarah Smith'

应该让您开始。 这是假设

  • Invoice__c是一个自定义对象(像Account这样的标准对象没有__c
  • 它有一个名为Unit__c的查找(外键)(因此,很可能“关系名称”(联接的表别名)被管理员选择为Unit__r。可以是Parent__r例如,您必须检查)
,

如果我了解问题所在,请参考以下嵌套查询示例。

SELECT invoices.invoiceNumber 
FROM PersonAccount 
WHERE  PersonAccount.invoiceNumber in (SELECT invoices.invoiceNumber 
FROM PersonAccount INNER JOIN units ON units.PersonID = PersonAccount.PersonID 
INNER JOIN invoices ON invoices.unitsId = units.unitsId)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-