2017-05-16 3 views
-1

Wie kann ich diese Abfrage tun. Ich muss die Schülerdaten und die Elterninformationen in einer Zeile anzeigen. Dies ist die Abfrage.Wie kann ich diese Abfrage durchführen

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

aber diese Abfrage zeigt nur die Studenten, die einen Vater und eine Mutter haben, und ich brauche die Studenten zu zeigen, dass nur einen Vater hat oder nur eine Mutter oder Studenten, die nicht Eltern eine Ahnung haben?

Dies ist der Schülertisch:

This is the student table:

Dies ist die übergeordnete Tabelle:

This is the parent table:

+0

Geben Sie auf dieser Grundlage Beispieldaten für beide Tabellen und Ihre erwartete Ausgabe an. – Utsav

Antwort

0

Wie Sie nicht Beispieldaten erwähnt haben, ich bin nur davon aus, das, was Sie wollen.

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

Sie sind Filterung alle leeren Zeilen, wo entweder Vater und Mutter ist nicht where fa.parentesco = 'Madre' and f.parentesco = 'Padre';

bewegen Bedingungen an die join eingestellt haben, sollte das Verhalten Sie wollen.

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

danke viel mann !! – David

Verwandte Themen