使用MySQL查询语法

时间:2013-09-27 10:28:07

标签: mysql

我有3张桌子:

用户

userid | pseudo

帖子

id | titre

posts_com

id | userid | id_billet | auteur | date | html

我需要使用帖子ID所有者和用户所有者列出持续时间posts_com ...我尝试了这个查询,但结果没有更正......有什么想法吗?

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

[编辑] 我需要:

- >评论1(html)来自auteur on post titre(user foo)

- >来自auteur2的评论2(html)帖子ti​​tre2(用户foo2) ...

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

线

WHERE u.userid=b.userid

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

WHERE u.userid=b.id

答案 2 :(得分:0)

您尚未将post_com表与结果集相关联。因此,post_com的所有记录都与您的userse-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

答案 3 :(得分:0)

首先你需要使用JOIN,并且你的表结构不清楚我的意思是posts_com和posts表之间没有明显的关系,我们不知道posts_com.id = posts.id或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