繁体   English   中英

使 SQL 查询使用子查询从两个表中返回数据

[英]Make SQL query to return data from two tables using subqueries

我需要从汽车表中返回汽车 ID 号,并从角色表中返回车主的姓名和姓氏。

每个角色都有一辆汽车,一个角色可以有多辆汽车。

我制作了 SQL 但它返回了分配给每个角色的每辆车。

SELECT a.id_number, b.owners 
FROM (
    SELECT number as id_number 
    FROM car 
    WHERE fk_ipasnieks IN (SELECT pk_kods FROM personas)
) as a,
(
    SELECT concat(name, ' ', surname) as owners 
    FROM personas 
    WHERE pk_kods IN (SELECT fk_ipasnieks FROM car)
) as b

子查询需要返回用于关联两个表的列。 否则,您将获得一个完整的交叉产品,将每个车主与每辆车配对。

SELECT a.id_number, b.owners 
FROM (
    SELECT fk_ipasnieks, number as id_number 
    FROM car 
    WHERE fk_ipasnieks IN (SELECT pk_kods FROM personas)
) as a
JOIN (
    SELECT pk_kods, concat(name, ' ', surname) as owners 
    FROM personas 
    WHERE pk_kods IN (SELECT fk_ipasnieks FROM car)
) as b ON a.fk_ipasnieks = b.pk_kods

这通常不会使用子查询来完成。 通常的写法是直接加入表。

SELECT c.number AS id_number, concat(p.name, ' ', p.surname) AS owner
FROM car AS c
JOIN personas as p ON c.fk_ipasnieks = p.pk_kods

暂无
暂无

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

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