Py学习  »  DATABASE

如何用MYSQL连接表?

Jack Nal • 4 年前 • 686 次点击  

有四张桌子。我想用当前ID链接所有表。如果查询中的最后一个表中没有值,则数据不会返回。我想访问所有表中的数据。我该怎么做呢?

我的代码:(部分工作)

SELECT 
    U.id AS id,
    U.amount AS amount,
    A.commission AS commission,
    I.power AS item_power
FROM affiliate AS A
     INNER JOIN users AS U
ON A.owner_id = U.id 
     INNER JOIN users_booster AS B
ON U.id = B.userid
     INNER JOIN auction_item AS I
ON B.item_id = I.id
    WHERE 
A.partner_id = '1947' AND 
I.type = 'reference_booster' AND
B.end_time >= NOW()
GROUP BY I.type

enter image description here

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54965
 
686 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Gordon Linoff
Reply   •   1 楼
Gordon Linoff    4 年前

使用 left join . 而不是 group by 需要:

SELECT U.id AS id, U.amount AS amount, A.commission AS commission,
      I.power AS item_power
FROM affiliate A JOIN
     users U
     ON A.owner_id = U.id JOIN
     users_booster B
     ON U.id = B.userid LEFT JOIN
     auction_item I
     ON B.item_id = I.id AND I.type = 'reference_booster'
WHERE A.partner_id = 1947 AND 
      B.end_time >= NOW();

  • 使用 LEFT JOIN 无论何时你想保留行,即使没有匹配。
  • 第二 中的表 左连接 需要在 ON 条款。
  • partner_id 是一个数字,所以不要将其与字符串进行比较。使用 1947 而不是 '1947' . 当然,如果是字符串,请保留单引号。
  • GROUP BY 在没有聚合函数的情况下很少有意义。