有4张桌子。我想用当前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
使用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
。LEFT JOIN
中second表上的条件必须在ON
子句中。partner_id
是一个数字,所以不要将其与字符串进行比较。使用1947
代替'1947'
。当然,如果是字符串,请保留单引号。GROUP BY
在没有聚合功能的情况下很少有意义。