Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] złączenie bez duplikatów
Forum PHP.pl > Forum > Bazy danych > MySQL
maciu
Mam dwie tabele

artykul:
id_item | name
1 name1
2 name2
3 name3

kategoria_artykul:
id_item | id_category
1 2
1 5

klucz głowny w tabeli artykul (id_item) jest kluczem obcym w tabeli kategoria_artykul

Teraz chce wyciągnąć rekordy z tabeli artykul z przypisanymi do nich kategoriami
  1. SELECT a.*, k.id_category FROM artykul a LEFT JOIN kategoria_artykul k ON a.id_item=k.id_item


Takie zapytanie zwróci prawidłowe wyniki, z tym, że artykuły które mają kilka kategorii zdubluje.
I teraz pytanie, czy da się w czystym SQL'u zwrócić tak dane, żeby artykuł, który ma przypisanych kilka kategorii, nie był dublowany, tylko w jednej kolumnie wpisał wszystkie kategorie artykułu.

czyli coś takiego
  1. SELECT a.*, (SELECT id_category FROM kategoria_artykul k WHERE k.id_item=a.id_item) AS categories FROM artykul a

z tym, żeby to podzapytanie zwracało ciąg id_kategorii, a nie x rekordów
heaven
Witam.
moze tak
  1. SELECT a.*, GROUP_CONCAT(k.id_category SEPARATOR ' ') AS 'ideki' FROM artykul a LEFT JOIN kategoria_artykul k ON a.id_item=k.id_item GROUP BY a.id_item

pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.