MySQL - 如何使用未存在的索引加入?

时间:2010-12-11 19:33:41

标签: mysql join

我的数据库中有一个名为ORDERS的表,它看起来像这样:

ID_section(int),ID_price(int),ID_city(int),ID_company(int)

我想使用JOIN方法将名称设置为ID。

我要做的是:

SELECT * FROM ORDERS 
JOIN sections ON sections.id=orders.ID_section 
JOIN prices ON prices.id=orders.ID_price 
JOIN cities on cities.id=orders.ID_cities 
JOIN companies ON companies.id=orders.ID_company

但重点是,在ORDERS表中可以插入值0并且它意味着 - 所有部分/价格/城市/公司,但是当我运行我的查询时,只有值,即他们的ID存在于另一个中桌子出现了。

有什么想法吗?感谢。

3 个答案:

答案 0 :(得分:1)

如果我理解你的问题是正确的,例如,ID_section = 0表示订单属于所有部分,则以下查询应该可以解决问题。

SELECT * FROM ORDERS 
JOIN sections ON sections.id=orders.ID_section OR orders.ID_section = 0 
JOIN prices ON prices.id=orders.ID_price OR orders.ID_price = 0
JOIN cities on cities.id=orders.ID_cities OR orders.ID_cities = 0
JOIN companies ON companies.id=orders.ID_company OR orders.ID_company = 0

另一方面,如果您想要检索所有订单,无论它们是否有关联的部分,价格等,那么将LEFT JOIN放在JOIN的位置就足够了。 (但这种情况不是由你的问题引起的!我只是添加了它,因为人们似乎明白这一点。)

答案 1 :(得分:0)

使用LEFT JOIN代替JOIN(这是INNER JOIN的简写)

答案 2 :(得分:0)

尝试LEFTRIGHT OUTER JOIN,您将能够找出您需要做的事情。基本上,LEFT或RIGHT OUTER JOIN会将NULLS插入到没有数据但仍然进行连接的列中。

网上有various resources可以解释这一点。