所以我有一个网页,显示有关它的图像和信息,我也有三个表。
IMAGES USERS COMMENTS
id user_id id
user_id username user_id
username password comment
title isadmin date
image (location) points
description signup_date
points email
category city
bio
profile_image
我需要使用图片和评论表中的所有信息。但我还需要检索发布评论和图像的用户的profile_image。我无法弄清楚如何做到这一点:这是我到目前为止所做的。
$conn = new PDO ("mysql:host=localhost;dbname=project", "root", "pass");
$stmt = $conn->prepare("
SELECT images.*, users.profile_image, comments.*
FROM (images.id JOIN comments ON images.id = comments.id)
LEFT JOIN users
ON images.user_id = user.profile_image
");
我关门了吗?或者在这里尝试不可能的事情!?
答案 0 :(得分:1)
这比你想的要简单得多:)
表格不是无关的,它们都有相同的密钥 - user_id
,这就是你加入它们的方式。
您的查询应如下所示:
SELECT images.*, users.profile_image, comments.*
FROM images
JOIN users ON images.user_id = users.user_id
JOIN comments ON comments.user_id = users.user_id AND images.id = comments.id
这假设images.id
和comments.id
匹配(我怀疑他们没有 - 但你没有给我们足够的信息)
查看您的表格结构,评论和图片似乎没有连接,因此可以单独查询它们以避免重复和放大令人困惑的数据
<强> --- --- UPDATE 强>
假设您已将image_id
添加到comments
,这是您的查询:
SELECT images.*, users.profile_image, comments.*
FROM images
LEFT JOIN users ON images.user_id = users.user_id
LEFT JOIN comments ON comments.user_id = users.user_id AND images.id = comments.image_id
LEFT JOIN的作用是返回“图像”,这些图像不一定与“用户”或“评论”相关联。
答案 1 :(得分:0)
答案 2 :(得分:0)
我认为是:
> SELECT images.*, users.profile_image, comments.*
> FROM images
> INNER JOIN users ON images.user_id= users.user_id
> INNER JOIN comments ON users.user_id= comments.user_id