[英]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.