簡體   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