all27or5927
2015-01-11 12:59
采纳率: 100%
浏览 9.3k
已采纳

mysql中有关两张表关联的查询语句

宝宝信息表
疫苗表
宝宝信息表中存的是已经接种过疫苗的信息,is_vaccined为1,另外一张表中,存的是所有疫苗的详细信息。现在,我想通过获取宝宝id来查询该宝宝所有的疫苗的状态(包括已经接种的和未接种的),改怎么写查询语句??

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • blownewbee 2015-01-11 13:23
    已采纳

    select t1.*, t2.* from t_baby_info t1 left outer join t_vaccine t2 on t1.vaccine_id= t2.vaccine_id

    点赞 打赏 评论
  • all27or5927 2015-01-12 01:08

    @caozhy
    这样不行,这条语句执行后,查找到的只有已经接种的疫苗的所有信息而已,没有未接种的疫苗信息

    点赞 打赏 评论
  • save4me 2015-01-12 09:39

    下面是主要的代码,如果还需要其他的字段,可以自己添加

    SELECT T3.baby_info_id
        , T3.vaccine_id
        , ISNULL(T4.is_vaccined, 0) AS is_vaccined --接种表里面没有记录的设为0,表示没有接种,可以根据你情况把0设置成你的未接种的数值
    FROM (
        SELECT T1.baby_info_id
            , T2.vaccine_id
        FROM t_baby_info T1, t_vaccine t2
    ) T3 --首先把疫苗和接种者的表合并,即每一个接种者每一个疫苗都一条记录,不管有没有接种
    LEFT JOIN t_baby_info T4
        ON T3.baby_info_id = T4.baby_info_id
            AND T3.vaccine_id =  T4.vaccine_id
    
    点赞 打赏 评论

相关推荐 更多相似问题