我从两个表中进行选择,其中table1 Person具有人员,person_id,姓名等详细信息,并从table2 PersonSong(这是另一个表Song的一对多表)中进行选择,其中具有person_id,song_id。

我有5个人,[1,2,3,4,5]。

每个人可以在PersonSong中播放多首歌曲。

我需要一个查询来显示我要搜索的具有song_id的人员列表,即使该列表为null。

例如

               Person                               PersonSong
person_id       name        facebookId  |    person_id      song_id
                                        |
1               Bob         123         |            1          5
2               Bill        456         |            1          9
3               Jake        789         |            2          2
4               Mary        951         |            1          10
5               Kate        753         |            2          3
                                        |            3          5
                                        |            4          5
                                        |            5          8
                                        |            5          5

如果我使用person_id = 5进行搜索,答案应该是,

Answer
person_id    person    facebookId    song_id
1            Bob       123           5
2            Bill      456           NULL
3            Jake      789           5
4            Mary      951           5
5            Kate      753           5

我想要一个包含所有人员及其数据的列表,以及他们是否知道当前歌曲ID的指示。

#1楼 票数:1 已采纳

您似乎只想left join

select p.*, ps.song_id
from person p left join
     personsong ps
     on p.person_id = ps.person_id and
        ps.song_id = 5;

#2楼 票数:0

您可以尝试使用子查询,即使没有连接到表PersonSong的情况下,它也将允许您获取Person的完整列表

SELECT 
    p.person_id, p.name, p.facebookId,
    (SELECT 
            song_id
        FROM
            PersonSong ps
        WHERE
            ps.person_id = p.person_id
                AND ps.song_id = 5 LIMIT 1) as song_id
FROM
    Person p

  ask by Galeaettu translate from so

未解决问题?本站智能推荐:

3回复

MySql语法错误; 可以在一个查询中从两个表中删除吗?

通过用分号将它们分开,是否不可能在一个查询中执行两个删除? 这是我的查询: 这给出了这个错误: 您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第10行的“从分类的地方删除”中使用正确的语法。poster_password=“ xxxx
3回复

使用SQL从数据库中选择数据

我有一个sql子选择来列出有多少个订单及其总价值: 任何想法,我如何做到这一点而无需子选择?
2回复

使用一个SQL查询中的数据获得另一个SQL的结果

我想展示一下一个NBA赛季的回合数。 我在mysql中存储了所有回合的数据库。 有2个不同的表无法连接。 其中一个表包含“当前回合”,这几乎是当前正在进行的回合,而另一个则包含所有回合。 当用户选择想要查看的回合结果时,他们将单击选择列表并转到该回合。 我想要的是,我希望能够做到这
1回复

如何使用php和html在我的博客上显示来自两个sql表的信息

我试图在我的网络博客上显示我的SQL表格中的信息。 我有两个表blog_posts和blog_members看起来像 和 我可以从一个表中添加信息,但是当我发布文章时我想显示memeberID我是否需要在blog_posts表中添加其他列如果是这样我将如何进行此操作我是否需要使
1回复

选择SQL查询以从多个表中获取数据并在一个表中查看

出现的问题是,在雇主输入结帐时间数据之前自动结帐时间。 签入时间输入后,结帐栏将为空,但它会自动生成结帐时间,并在接下来的几天中提取前几天的数据并重复该时间。我只是怀疑,调用时会出现一些错误一个查询中来自3个表的数据:* tbl_student *时间* check_out
2回复

确认完成后,将详细信息从一张表移动到另一张表[sql]

我有一个注册代码,可将用户详细信息插入我选择的表中。 问题是我向用户添加了“确认代码”,因此每个帐户都需要通过其邮件来验证其用户。 确认完成后,列“ confirmation”更改为“ confirmed”。 如果用户未验证其帐户,则确认代码将保留在“确认”列中。 问题是我用ht
6回复

从MySQL表中为1个用户选择多行

为了便于解释,我将尝试简化一切。 我有3个SQL表: Users , Certs , Serv 在Users表中存储有关唯一用户的详细信息。 在Certs表中存储有关证书的详细信息和拥有此证书的用户的UserId (1个用户可以拥有多个证书) 在Serv表中存储有关海上服
3回复

从多个表中获取具有相同名称的列

我有两个表:USERS(id,名称,电子邮件,密码)QUESTIONS(id,userid,类型,ques,日期,时间) 我必须将Questions.id的值作为qid传递。 我无法使用以下代码获得所需的结果。 而不是采用QUESTIONS表的'id'值,而是采用USERS表的'id'