我该怎么做这个查询

时间:2017-05-16 03:08:25

标签: mysql

我该怎么做这个查询。我需要在一行中显示学生数据和父母信息。这是查询。

select da.nombre, da.apPaterno, da.apMaterno, f.nombre, f.aPaterno,
f.aMaterno, f.parentesco , fa.nombre, fa.aPaterno, fa.parentesco from 
datoaspirante as da
left join familiar as f on da.familiarid = f.datoaspirante
left join familiar as fa on da.familiarid = fa.datoaspirante
where fa.parentesco = 'Madre' and f.parentesco = 'Padre';

但这个查询只显示有父亲和母亲的学生,我需要向学生展示只有父亲或只有母亲或学生没有父母的想法吗?

这是学生表:

This is the student table:

这是父表:

This is the parent table:

2 个答案:

答案 0 :(得分:1)

您过滤掉父亲和母亲未设置的所有空行where fa.parentesco = 'Madre' and f.parentesco = 'Padre';

将条件移动到连接,应该得到你想要的行为。

SELECT da.nombre, da.apPaterno, da.apMaterno, f.nombre, f.aPaterno,
f.aMaterno, f.parentesco, fa.nombre, fa.aPaterno, fa.parentesco
FROM 
datoaspirante AS da
LEFT JOIN familiar AS f ON da.familiarid = f.datoaspirante and f.parentesco = 'Padre'
LEFT JOIN familiar AS fa ON da.familiarid = fa.datoaspirante and fa.parentesco = 'Madre';

答案 1 :(得分:0)

由于您没有提及样本数据,我只假设这是您想要的。

select d.*,f.*
,case 
    when f.datoaspirante is null 
    then 'No parents'
    else 'Single parent'
end as type
from 
datoaspirante d
left join 
(select datoaspirante from familiar
group by datoaspirante
having count(*)<2
) f
on d.familiarid = f.datoaspirante