我在同一个数据库中有这两个MySQL表,我正在利用它来建立像网站这样的论坛。我的问题是关于加入表格中的新字段的正确查询"主题"基于" user_id"两者之间的联系。
表"用户",其中字段" user_id"在注册时创建,自动增量:
USERS ╔═════════╦══════════╦═══════════╦══════════╦════════╗ ║ user_id ║ username ║ firstname ║ lastname ║ etc... ║ ╠═════════╬══════════╬═══════════╬══════════╬════════╣ ║ 1 ║ JJJJ ║ John ║ Johnson ║ etc... ║ ║ 2 ║ MMMM ║ Max ║ Maxman ║ etc... ║ ║ 3 ║ AAAA ║ Alex ║ Aleckson ║ etc... ║ ╚═════════╩══════════╩═══════════╩══════════╩════════╝
表"主题",其中" user_id"当任何用户提交您通常在论坛网站上称为新主题的内容时,将从另一个表中获取。
TOPICS ╔══════════╦═════════════╦═══════════════════╦═════════╦═════════╗ ║ topic_id ║ description ║ datetime ║ user_id ║ etc ... ║ ╠══════════╬═════════════╬═══════════════════╬═════════╬═════════╣ ║ 1 ║ bla bla ║ dd mon yyyy hh:mi ║ 3 ║ etc... ║ ║ 2 ║ bla bla ║ dd mon yyyy hh:mi ║ 3 ║ etc... ║ ║ 3 ║ bla bla ║ dd mon yyyy hh:mi ║ 2 ║ etc... ║ ╚══════════╩═════════════╩═══════════════════╩═════════╩═════════╝
我可以确认在db中成功建立了与db的连接。数据库名称是"网站"。我正在运行以下查询但没有成功,因为我喜欢你在第三个表中看到的结果(右边加入最后一个字段)。
mysql_query("SELECT topics.user_id, users.user_id
FROM website.topics
JOIN website.users ON topics.who_posted_hangout;");
TOPICS ╔══════════╦═════════════╦═══════════════════╦═════════╦═════╦═══════════════════╗ ║ topic_id ║ description ║ datetime ║ user_id ║ etc ║ username ║ ╠══════════╬═════════════╬═══════════════════╬═════════╬═════╬═══════════════════╣ ║ 1 ║ bla bla ║ dd mon yyyy hh:mi ║ 3 ║ etc ║ AAAA ║ ║ 2 ║ bla bla ║ dd mon yyyy hh:mi ║ 3 ║ etc ║ AAAA ║ ║ 3 ║ bla bla ║ dd mon yyyy hh:mi ║ 2 ║ etc ║ MMMM ║ ╚══════════╩═════════════╩═══════════════════╩═════════╩═════╩═══════════════════╝
我使用了一个例子,我看到有人编写查询,但有些事情对我没有意义:
<pre> </pre>
标记之间。
答案 0 :(得分:1)
尝试:
'SELECT * FROM topics INNER JOIN users ON topics.user_id = users.user_id WHERE topics.user_id = the_user_id';
答案 1 :(得分:1)
在Q1中,虽然他在FROM子句中没有包含website.users,但是通过在连接中引用它来推断它。通过在连接中包含该字段,假定该表可用于查询。
Q2:在两种情况下对user_id的引用都附有表名:users.userid,topics.user_id。如果他在没有表名的情况下使用了user_id,那就会出错。
问题3:是的......你是对的!
问题4:我不能100%确定您希望您的查询选择什么,所以我还没有建议......但是如果您进一步解释一下,或许我们可以提供帮助。