Wpis z mikrobloga

jak uzyskać dane z trzech tabel, gdzie z jednej z nich chciałbym dostać wszystkie kolumny, a z dwóch pozostałych po dwie kolumny. muszę użyć do tego joina w zagnieżdżonym selectcie.

wiem, że jest to banał, ale zgubiłem się i od wczoraj siedzę nad taką pierdołą. w pewnym momencie się zaciąłem i nic nie przychodzi mi do głowy, chociaż kombinowałem z tym zapytaniem w każdą stronę i utknąłem xD

SELECT * FROM sales as s
JOIN (SELECT p.product_name,p.category FROM product)AS p
JOIN (SELECT c.customer_name,c.age FROM customer )AS c ON c.customer_id = s.customer_id
ON s.product_id = p.product_id;

i dokładna treść zadania:


#bazydanych #informatyka #sql #kiciochpyta
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
@torpedowiec: ten drugi ON powinien być przed drugim joinem. Natomiast to nie zadziała, bo tym selectem w joinie ograniczasz tabelę do konkretnych kolumn, a w ON odwołujesz się do innej, spoza tych
  • Odpowiedz
@matti05: akurat ten najwyższy select to wiem, że jest niezbyt dobry, ale nie miałem już pomysłu jakby to ugryźć, żeby nie pisać każdej kolumny z tabeli sales. jedyne co mi przyszło do głowy to sales.*, ale to chyba nie przejdzie xD
no nic, napiszę od nowa, bo z tego co ja napisałem wczoraj to sam mało rozumiem
  • Odpowiedz
SELECT c.customer_name,c.age,sp.*
FROM customer as c
JOIN (SELECT s.*,p.product_name,p.category FROM sales AS s LEFT JOIN product AS p
ON s.product_id = p.product_id) AS sp
ON sp.customer_id = c.customer_id;

może i wyszło zbyt pokrętnie, ale działa. ktoś rozwiązał to na forum, przeanalizowałem, napisałem sobie sam i działa. dzięki wielkie! ;)
  • Odpowiedz