0

我有 3 张桌子:

用户

userid | pseudo

帖子

id | titre

post_com

id | userid | id_billet | auteur | date | html

我需要列出最后一个posts_com及其帖子ID所有者和用户所有者......我尝试了这个查询,但结果不正确......请问有什么想法吗?

SELECT c.userid,
       c.id_billet,
       c.auteur,
       c.date,
       c.html,
       u.pseudo,
       b.titre,
       b.id
FROM posts_com AS c,
     users AS u,
     posts AS b
WHERE u.userid=b.userid
ORDER BY c.id DESC
LIMIT 12

[编辑] 我需要:

-> 来自作者关于 post titre 的评论 1 (html)(用户 foo)

- >来自auteur2的评论2(html)在tire2(用户foo2)上......

4

4 回答 4

1

使用连接

SELECT A.userid,A.id_billet,A.auteur,A.date,A.html,B.pseudo,C.id,C.titre
FROM posts_com A
JOIN users B ON A.userid = B.userid
JOIN posts C ON A.id = C.id
ORDER BY A.id DESC
LIMIT 12

编辑

SELECT A.userid,A.id_billet,A.auteur,A.date,A.html,B.pseudo,C.id,C.titre
FROM posts_com A
JOIN users B ON A.userid = B.userid
JOIN posts C ON A.id_billet = C.id
ORDER BY A.id DESC
LIMIT 12
于 2013-09-27T10:39:19.613 回答
0

线

WHERE u.userid=b.userid

表格帖子中似乎没有名为 userid 的列。也许你的意思是

WHERE u.userid=b.id

?

于 2013-09-27T10:34:09.377 回答
0

您尚未将 post_com 表链接到您的结果集。因此,post_com 的所有记录都与您的 usere-post join 的所有记录相连接。

SELECT c.userid,
       c.id_billet,
       c.auteur,
       c.date,
       c.html,
       u.pseudo,
       b.titre,
       b.id
FROM posts_com AS c,
     users AS u,
     posts AS b
WHERE u.userid=b.userid
  AND b.id = c.id(+)
ORDER BY c.id DESC
LIMIT 12
于 2013-09-27T10:37:06.220 回答
0

首先你需要使用JOIN,其次你的表结构不清楚我的意思是posts_com和posts表之间没有显着的关系,我们不知道posts_com.id = posts.id OR posts_com.userid = posts.id还是posts_com.id_billet = posts.id?

SELECT c.userid,
       c.id_billet,
       c.auteur,
       c.date,
       c.html,
       u.pseudo,
       b.titre,
       b.id
FROM (posts_com c JOIN users u
       ON c.userid = u.userid
     ) JOIN posts b
       ON c.id_billet = b.id
ORDER BY c.id DESC
LIMIT 12
于 2013-09-27T10:40:36.637 回答