繁体   English   中英

如何从两个表中进行选择并在SQL中匹配两列?

[英]How to SELECT FROM two tables and match two columns in SQL?

所以我想做的是从具有特定项目编号的table1中选择所有记录。 然后,我将联接另一个表并仅获得一个名为“ FloorId”的列,该列等于table1中的Project AND Element。

(SELECT Project FROM dbo.IMP_MODEL_GEOMETRY WHERE dbo.IMP_GEOMETRY.Project = dbo.IMP_ELEMENT.Project AND dbo.IMP_GEOMETRY.Element = dbo.IMP_ELEMENT.Element)

在dbo.IMP_GEOMETRY表中,我将在Project和Element上获得多个结果,因此maby我可以选择第一个。

这是我尝试过的:

$sql = "SELECT * FROM dbo.IMP_ELEMENT WHERE Project LIKE '%$objNr%'
            INNER JOIN dbo.IMP_MODEL_GEOMETRY ON dbo.IMP_ELEMENT.Project = dbo.IMP_MODEL_GEOMETRY.Project";

我是SQL的新手,并不真正知道“。”是什么。 在“ dbo.IMP”中代表。 表名是:dbo.IMP_ELEMENT(我看到查询在点标记表的地方,而点后面是列名。但是在这种情况下,点既不代表表又代表列,它只是表中的一个点名称。

除了JOIN(其中Project是列)(dbo.IMP_MODEL_GEOMETRY.Project)

我期望的表如下所示:

id    Project    Element    FloorId

其中FloorId来自table2。

编辑

这两个表都包含“项目”和“元素”,因此,我可以使用它们进行匹配。 在表1中,每个项目元素只有一行,但是在表2中,项目元素可以有多行,因此从表2中可以选择仅找到找到的第一个匹配项。

您可以尝试以下方式-

SELECT a.id,a.project,a.element,b.floorid FROM dbo.IMP_ELEMENT a
            INNER JOIN dbo.IMP_MODEL_GEOMETRY b ON a.Project = b.Project and a.element=b.element
WHERE a.Project LIKE '%$objNr%'

我是SQL的新手,并不真正知道“。”是什么。 在“ dbo.IMP”中代表。

“。” 是识别所要元素的语法的一部分。 完全是..例如Adventureworks.dbo.customer

通过添加另一个“”,这也扩展到了列。 并指定列名称。

但是开发人员很懒,如果您不指定数据库,那么引擎将使用查询当前连接到的数据库。 不指定数据库是完全正常的。

实际上,我们真的很懒,大多数人都不指定架构(dbo。部分),因为数据库引擎只会检查所有架构。

选择数据-联接

SELECT
    --use table aliases (t1.) for each column, this is shorthand for dbo.table1 
    --if the same column exists in more than one table the database engine knows 
    --which one you want by looking at the aliases  
    t1.column_name 
    ,t2.column_name
FROM 
    dbo.table1 as t1
    INNER JOIN dbo.table2 as t2  
        --inner join returns only rows where the join matches both tables 
        ON t1.primary_key_column = t2.foreign_key_column 
WHERE
    --the join gives you a super table with all the rows that matched the join
    --now you can add in any filters to your results
    t1.some_column = 'foo'
;

INNER JOIN,LEFT JOIN,RIGHT JOIN和FULL JOIN有什么区别?

或者您可以尝试以下方法,

select table1.*, table2.FloorId
from IMP_ELEMENT as table1,
     IMP_MODEL_GEOMETRY as table2 
where table1.Project = table2.Project
  and table1.Project like '%Whatever%';

您可以根据需要更改邮件表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM