我正在尝试合并一些表格,布局示例如下:
订单
user_id=7 pricing id=37
产品定价
id=37 product_id=33
产品
id=33 name=test product
SQL
SELECT *
FROM orders
INNER JOIN products_pricing
ON orders.pricing_id = products_pricing.id
INNER JOIN products
ON products_pricing.product_id = products.id
WHERE orders.user_id = '7' ");
列表
id=233 user_id=7 url=test.com
使用这个 SQL,我得到一个输出,它给出了 user_id 为 7 的所有产品,它会在一个 while 循环中列出每个产品名称。但是,当我为名为 listings 的表添加另一个 INNER JOIN 时,该表有一个 user_id 列,我需要为匹配的每一行获取一个 url,以便我可以将产品名称与 url 超链接,我也会得到列表表中包含的所有内容作为上面的工作内容。我要么做错了,要么错过了一些东西。我花了几个小时试图弄清楚,但一直得到相同的结果。谁能帮帮我?
最佳答案
试试这个:
SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id = pp.id
INNER JOIN products AS p ON pp.product_id = p.id
INNER JOIN listings AS l ON l.user_id = o.user_id
WHERE o.user_id ='7'
AND l.id = 233
AND l.url = 'test.com';
SQL Fiddle Demo
对于您在问题中发布的示例数据,这将为您提供:
| ID | NAME | URL | USER_ID | PRICING_ID |
------------------------------------------------------
| 33 | testproduct | test.com | 7 | 37 |
关于MySQL内连接查询多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14673338/