【发布时间】:2014-11-03 20:21:51
【问题描述】:
我有一个包含三个表的简单数据库。在数据库中,我有一个用于我系统用户的表,一个用于竞赛应用程序的表,以及一个允许我跟踪哪些用户选择查看哪些应用程序的中间表。
表 1 = 用户(user_id、用户名、第一个、最后一个等...)
表 2 = 应用程序(application_id、company_name、url 等)
表 3 = 选择(pick_id、user_id、application_id、pick)
我正在尝试编写一个 SQL 查询,该查询将显示所有已提交的应用程序,如果用户选择了任何单个应用程序,将显示它已被“选中”(1=选中,0=未选中)。
所以对于 user_id = 1 我想看看:
列名称(application_id、company_name、pick)
1,Foo,1
2、酒吧、1
3、Alpha、Null
4、Beta、Null
我尝试了以下查询:
SELECT applications.application_id, applications.company_name, picks.picked
FROM applications
LEFT JOIN picks ON applications.application_id = picks.application_id
ORDER BY applications.application_id ASC
返回这个:
1,Foo,1
1,富,1
2、酒吧、空
3、阿尔法、空
4、测试版、空
我有第二个用户 (user_id = 2),他也选择了应用程序 1 ("Foo"),我知道它正在返回第二行。
然后我尝试通过在此处指定 user_id = 1 来限制范围:
SELECT applications.application_id, applications.company_name, picks.picked
FROM applications
LEFT JOIN picks ON applications.application_id = picks.application_id
WHERE user_id = 1
ORDER BY applications.application_id ASC
现在我只得到:
1,Foo,1
关于如何获得所需内容的任何建议?同样,理想情况下,对于我希望看到的单个用户:
列名称(application_id、company_name、pick)
1,Foo,1
2、酒吧、1
3、Alpha、Null
4、Beta、Null
【问题讨论】:
-
这是 mysql 还是 SQL-server?请仅命名适当的名称
-
对不起 - 只是 mysql。无意中选择了sql-server。
-
您应该加入 users 表以指定用户
-
谢谢,约翰。我就是这么想的。有关如何编写查询的任何建议?
-
哀悼!照顾好自己和家人!