mysql - MySQL中如何连接多个表?

标签 mysql sql join

我想了解客户从给定制造商订购了什么产品。

我有这些表格(带列):

  • 商品(item_num、order_num、stock_num、ma​​nu_code、数量等)
  • 库存(stock_num、ma​​nu_code说明、unit_price 等)
  • 订单(order_num、order_date、customer_num、ship_instruct 等)
  • 客户(customer_num、fname、lname、company、address1 等)

这是我现在的查询,但我相信它返回某种叉积:

SELECT concat(c.fname," ", c.lname) AS fullname, s.description
FROM items i, stock s, customer c JOIN orders o 
ON o.customer_num=c.customer_num 
WHERE o.order_num=i.order_num AND i.manu_code = 'ANZ';

返回一个大列表(1000 行),其中包含大量重复的整体,

Anthony Higgens | baseball gloves
Anthony Higgens | baseball gloves
       .                 .
       .                 .
       .                 .
Kim Satifer     | running shoes

我做错了什么?

最佳答案

FROM items i, stock s, customer c是否对涉及的三个表进行笛卡尔连接,但是您的 WHERE对笛卡尔连接几乎没有限制。

如果你做一些更明确的加入,你将大大减少重复并更正确地表达你想要做的事情。使用INNER JOINS以及正确的连接标准,而不是仅仅列出 FROM 之后的所有表。示例:(还有更多这样的条件,您需要应用于 JOINS,但这只是一个示例):INNER JOIN stock ON stack.manu_code = items.manu_code .

最后,您可以使用SELECT DISTINCTGROUP BY以进一步减少重复。但是如果你得到明确的 JOIN如果 JOIN 标准正确,则不应有太多重复项。

关于mysql - MySQL中如何连接多个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444872/

相关文章:

php - 根据相应行使用递增值进行更新

sql - 在编写 SQL 查询方面需要帮助

mysql - SQL : update table from another grouped table

php - 如何提高mysql查询处理速度

php - MySQL 复杂连接

r - 在指定列上合并 R 中的 df1、df2、df3 数据帧

mysql - 如何编写查询来计算具有多个约束和匹配的记录?

javascript - 过滤、排序和分页方法的最快方法

java - 如何在Java中捕获同时执行多个查询的响应时间?

python - Django INNER JOIN 使用带有 WHERE 子句的外键