我该怎么做这个查询。我需要在一行中显示学生数据和父母信息。这是查询。
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';
但这个查询只显示有父亲和母亲的学生,我需要向学生展示只有父亲或只有母亲或学生没有父母的想法吗?
这是学生表:
这是父表:
答案 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