[英]combine three tables in join mysql
我正在尝试显示图像,用户名以及查询附带的回复。 我使用了类似下面的代码,但是对于回复列,即使信息已满,我仍会得到null或空值。 它有3个表,一个用于标题,图像和回复。 标题包括用户名和其他用户信息,图像图像以及人们做出的答复。
假定reply.mid与images.mid相匹配,以便答复可以在图像旁边。
SELECT images.id, images.who, header.username, images.message, images.name, reply.reply
FROM header, images
LEFT JOIN reply ON reply.reply = reply.mid
OR reply.mid = images.mid
WHERE images.name IS NOT NULL = header.id
AND images.who IS NOT NULL
AND images.message IS NOT NULL
GROUP BY images.mid
下面的故事结构。 抱歉
TABLE Header
username
id
who
where
Table images
message
name
mid - id that auto increments when image is loaded
id
content
Table reply
mid id that is taken from images mid to relate image to reply.
reply
id ----this is only for an id for a reply that is auto increment
更新。 上面的代码有效。
从其他人的评论中,您还有一个GROUP BY,用于进行汇总(例如MIN(),MAX(),AVG()等),例如每个销售代表,每月,每年的总销售额等。通过按图像ID分组,您将丢失一个人可能有多个回复的实例。
无论如何,对您的查询进行一些清理。 目前尚不清楚标题表如何链接到答复,您是否有LEFT-JOIN答复,但随后查找映像的IS NOT NULL。 这表示INNER联接与LEFT联接。 我正在转移查询,因为您正在寻找答复以及那些随身携带图片的人,就这样吧。
SELECT
H.username,
I.id,
I.who,
I.message,
I.name,
R.reply
FROM
replies R
join header H
on R.SomeKeyToLinkToHeader = H.SomeHeaderKeyLinkingToReplies
LEFT join images I
on R.ID = I.MID
OR R.MID = I.MID
WHERE
I.MID IS NOT NULL
对IS NOT NULL的测试实际上只需要在任何一个键列上……如果它为null,则整个记录都将丢失并且也将为null。 (即:在“ ID”或“ MID”列的答复中都找不到匹配项。
如果提供表结构以更好地显示表之间的关系,则上述查询显然会稍作更改。 您可能打算使用ORDER BY而不是GROUP BY子句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.