2017-05-16 145 views
-1

我該如何做這個查詢。我需要在一行中顯示學生數據和家長信息。這是查詢。我該如何做這個查詢

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:

+0

提供這兩個表的樣本數據和基於此的預期輸出。 – Utsav

回答

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 
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'; 
+0

非常感謝很多人! – David