Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql模拟完全外部连接_Mysql_Sql_Union_Outer Join_Jointable - Fatal编程技术网

Mysql模拟完全外部连接

Mysql模拟完全外部连接,mysql,sql,union,outer-join,jointable,Mysql,Sql,Union,Outer Join,Jointable,我有2个表用户和订单,我想得到用户和他的订单计数 SELECT `users`.*, `orders`.*,count(*) FROM `users` LEFT JOIN orders ON `users`.`id` = `orders`.`user_id` UNION SELECT `users`.*, `orders`.*,count(*) FROM users RIGHT JOIN orders ON `users`.`id` = `orders`.`user_id` 此查询选择

我有2个表用户和订单,我想得到用户和他的订单计数

SELECT `users`.*, `orders`.*,count(*) FROM `users` LEFT JOIN orders ON  
`users`.`id` = `orders`.`user_id` 
UNION SELECT `users`.*, `orders`.*,count(*) FROM users 
RIGHT JOIN orders ON `users`.`id` = `orders`.`user_id`
此查询选择有订单的用户和订单数量,但不选择没有订单的用户

我想要得到什么

user orders
John   5
Thomas 0
Mike   8
我得到了什么

user orders
John   5
Mike   8

如何获得没有订单的用户?

您不需要完全的外部连接。假设
orders
表中的所有用户都具有对
users
表的有效引用,则左侧外部联接应该可以:

SELECT u.*, count(o.user_id)
FROM `users` u LEFT JOIN
      orders o
      ON u.`id` = o.`user_id` 
group by u.id

你不需要一个完整的外部连接。假设
orders
表中的所有用户都具有对
users
表的有效引用,则左侧外部联接应该可以:

SELECT u.*, count(o.user_id)
FROM `users` u LEFT JOIN
      orders o
      ON u.`id` = o.`user_id` 
group by u.id

以下查询将为您提供所有用户及其订单计数的列表,如果该用户没有订单,则包括0

另外,您确定ORDER_ID是用户表的FK吗?这对我来说似乎是反直觉的

SELECT U.NAME
        ,COUNT(O.ORDER_ID)
FROM    USERS U
LEFT OUTER JOIN
        ORDERS O
ON      U.ID = O.ORDER_ID
GROUP BY
        U.NAME

以下查询将为您提供所有用户及其订单计数的列表,如果该用户没有订单,则包括0

另外,您确定ORDER_ID是用户表的FK吗?这对我来说似乎是反直觉的

SELECT U.NAME
        ,COUNT(O.ORDER_ID)
FROM    USERS U
LEFT OUTER JOIN
        ORDERS O
ON      U.ID = O.ORDER_ID
GROUP BY
        U.NAME

如果你只想要
User
Order
列,为什么要做
SELECT*
?@Declan\K好的,但没有问题,我想如果你只想要
User
Order
列,为什么要做
SELECT*
?@Declan\K好的,但我想没有问题