我正在尝试创建一个连接语句来解决我的问题,但无法理解它。
我是新加入的声明,所以如果我的sql声明是废话,请耐心等待。
我有两张桌子,一张是用户询问有关待售物品的问题的表格。
其次是用户提出问题的项目表。
名为questions
的表1由question_ref, questioner_user_ref, item_ref, seller_ref, question_text, timestamp
questions
===========
+--------------+--------------------+---------+-----------+--------------+----------+
| question_ref |questioner_user_ref |item_ref |seller_ref |question_text |timestamp |
+--------------+--------------------+---------+-----------+--------------+----------+
名为my_item_comments
的表2由questioner_ref, item_ref, last_question_ref
my_item_comments
===========
+---------------+---------+------------------+
|questioner_ref |item_ref |last_question_ref |
+---------------+---------+------------------+
我已设置表格2以跟踪用户提出问题的项目,以便在其他人向卖方询问问题或卖家回答时通知他们。
所以我想创建一个问题记录集
一个)。有人回答了有关用户正在销售的商品的问题
B)。卖家已回复用户提出的问题,
C)。第三个用户询问了有关用户也询问过问题的项目的问题。
有点像facebook的评论系统,在这里您可以了解人们对您评论过的状态所做的评论。
所以我当前的sql语句如下
$user_ref= current logged in user
$sql=mysql_query("
SELECT * FROM questions
LEFT JOIN my_item_comments
ON questions.item_ref=my_item_comments.item_ref
WHERE questions.questioner_user_ref!='$user_ref'
AND (questions.seller_ref='$user_ref' OR questions.item_ref=my_item_comments.item_ref
ORDER BY timestamp DESC");
结果不起作用,我认为这是因为OR questions.item_ref=my_item_comments.item_ref
,但对于我的生活,我无法解决这个问题。
非常感谢任何帮助,即使这意味着在表格中使用更多表格或新字段重构我的数据库。
事先感谢,巴里答案 0 :(得分:1)
SELECT * FROM questions
LEFT JOIN my_item_comments ON questions.item_ref=my_item_comments.item_ref
WHERE
questions.questioner_user_ref != '$user_ref' AND
(questions.seller_ref='$user_ref' OR questions.item_ref=my_item_comments.item_ref)
ORDER BY timestamp DESC
我认为你错过了)
来封闭OR子句(在上面的示例中我添加了它)
答案 1 :(得分:0)
您应该尝试提高自己和我们的可读性,以便更容易调试,更方便我们帮助您: - )
$q = "
SELECT *
FROM questions
RIGHT JOIN my_item_comments ON questions.item_ref = my_item_comments.item_ref
WHERE questions.questioner_user_ref != '".$user_ref."'
AND ( questions.seller_ref = '".$user_ref."'
OR questions.item_ref=my_item_comments.item_ref
)
ORDER BY timestamp DESC";
$rs = mysql_query($q);
最好只是带有虚拟数据的查询
SELECT *
FROM questions
RIGHT JOIN my_item_comments ON questions.item_ref = my_item_comments.item_ref
WHERE questions.questioner_user_ref != 'dummy_ref'
AND ( questions.seller_ref = 'dummy_ref'
OR questions.item_ref=my_item_comments.item_ref
)
ORDER BY timestamp DESC
为您的查询尝试right join
。左连接确实会获得所有行。