繁体   English   中英

MySQL内部联接查询多个表

[英]MySQL Inner Join Query Multiple Tables

我正在尝试合并一些表格,以下是布局示例:

命令

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进行超链接,同时我也得到了Listings表中包含的所有内容作为上面的工作内容。 我做错了或者遗漏了一些东西。 我花了几个小时试图弄清楚,但仍得到相同的结果。 谁能帮我吗?

尝试这个:

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小提琴演示

对于您在问题中发布的样本数据,这将为您提供:

| ID |        NAME |      URL | USER_ID | PRICING_ID |
------------------------------------------------------
| 33 | testproduct | test.com |       7 |         37 |

是的,可以使用INNER联接本身完成此操作,并在select语句中获取select列。

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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM