2010-03-17 12 views
12

Czy można wykonać równoważnik LEWEGO POŁĄCZENIA z podselekcją, w której wymagane są liczne kolumny. Oto co mam na myśli.Korzystanie z podselekcji w celu uzyskania LEWEGO DOŁĄCZENIA

W obecnej wersji robi mi to komunikat "Operand powinien zawierać 1 kolumnę (y)".

Tak, wiem, że jest to możliwe przy LEFT JOIN, ale powiedziano mi, że przy selekcji podselekcyjnej jestem ciekawy, jak to się robi.

Odpowiedz

7

Podselekcja może mieć tylko jedną kolumnę zwróconą od niego, więc potrzebujesz jednej podselekcji dla każdej kolumny, która ma zostać zwrócona z tabeli modelu.

+0

mogę rzeczywiście powrócić wiele kolumn w podselekcji choć nie tak, jak chcę. Ta kwerenda zwraca wiele kolumn. SELECT m. *, Modele. * FROM make m, (SELECT * FROM model LIMIT 1) AS modele – Andre

+1

Podzapytania mogą zwracać więcej niż jedną kolumnę z FROM i JOIN, ponieważ pracujesz z wierszami w tym kontekście. Ponieważ pracujesz tylko z skalarami w kontekście SELECT, możesz zwrócić tylko jedną wartość z podkwerendy. – MisterZimbu

+0

Uzgodnione. Dziękuję Ci. – Andre

16

Istnieje wiele praktycznych zastosowań tego, co sugerujesz.

Ten hipotetyczny kwerenda zwróci ostatnią release_date (contrived przykład) na dowolny dokonać z co najmniej jednym release_date i null dla któregokolwiek zrobić bez release_date:

SELECT m.make_name, 
     sub.max_release_date 
    FROM make m 
     LEFT JOIN 
      (SELECT id, 
        max(release_date) as max_release_date 
       FROM make 
      GROUP BY 1) sub 
     ON sub.id = m.id 
Powiązane problemy