2017-01-29 2 views
1

ich mehrere Aliase auf der gleichen Spalte zu geben versuche, im Grunde möchte ich diese zwei Abfragen sein:Mehrere Alias, eine Spalte

SELECT name AS singlePeople FROM People 
JOIN ID FROM Numbers 
ON People.ID=Numbers.ID 
WHERE People.isMarried=f; 


SELECT name AS marriedPeople FROM People 
JOIN ID FROM Numbers 
ON People.ID=Numbers.ID 
WHERE People.isMarried=t; 

ich meine Ergebnisse aussehen soll:

singlePeople marriedPeople 
------------- -------------- 
Bob Kelly  John SMith 
John Adams 
+0

Was die Tabellen aussehen? Es ist mir nicht klar, warum du eine 'Join' brauchst. –

Antwort

0

Select t1. *, t2. * Von ( SELECT name AS singlePeople VON Menschen JOIN ID FROM Zahlen ON People.ID = Numbers.ID WHERE Peopl e.isMarried = f t1) Inner ( SELECT name AS marriedPeople kommen von Leuten, ID JOIN VON Zahlen ON People.ID = Numbers.ID WHERE People.isMarried = t ) t2 auf 1 = 1

+0

das funktioniert nicht – pokemongirl1234

1

Ist das ausreichend?

SELECT (CASE WHEN p.isMarried THEN 'Married' ELSE 'Single' END) as which, 
     name 
FROM People p JOIN 
    Numbers n 
    ON p.ID = n.ID; 

Wenn nicht, können Sie dies mit Variablen:

select max(case when not ismarried then name end) as single, 
     max(case when ismarried then name end) as married 
from (select name, p.ismarried, 
      (@rn := if(@i = ismarried, @rn + 1, 
         if(@i := ismarried, 1, 1) 
         ) 
      ) as seqnum 
     from people p join 
      numbers n 
      on p.id = n.id cross join 
      (select @i := NULL, @rn := 0) params 
     order by ismarried 
    ) pn 
group by rn;