Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciągnięcie danych z tabeli wiele do wielu
Forum PHP.pl > Forum > Bazy danych > MySQL
RollDev
Witam,
Dziś trafiłem na mały problem.
Mianowicie mam 3 tabele.
1:Arts
ID | name | size
2: artist
ID | name | years
3:
id | arts_id | artist_id

I mam pytanie. Jaki sposób będzie najbardziej optymalny, aby wyciągnąć te dane?
Idea wygląda tak, że:
Arts może mieć wiele artist i artist może mieć wiele art.

Chciałbym wyciągnać art i listę artist, który są przypisani do art'a

Ma ktoś jakieś pomyły?
RollDev
Nie do końca właśnie @trueblue

Dostaje 2 rekordy, a chce jeden.
Dosjtae takie info:

arts.id | art.name | artist.name1
arts.id | art.name | artist.name2

a chciałbym

arts.id | art.name | artist.name1, artist.name2

INFO:
Mam jeden art, który jest przypisany do dwóch artist
trueblue
To samo + https://www.google.pl/search?q=group_concat
RollDev
tego mi brakowało szefie!

Jednak nie zadziałało, albo zle uzyłem.

  1. SELECT ar.name AS name,
  2. ar.size AS size,
  3. GROUP_CONCAT((SELECT at.name FROM artist at WHERE at.id = aa.art_id)) AS artist,
  4. FROM arts ar
  5. LEFT JOIN arts_artist aa
  6. ON aa.artist_id = ar.id
trueblue
Zapytanie wygląda prawie tak samo jak zwykłe zapytanie bez groupowania.
Ale tu dodajesz GROUP_CONCAT na artist.name, a całe zapytanie ma być grupowane po arts.id (GROUP BY arts.id).
Bez żadnych dziwnych podzapytań.
RollDev
Właśnie tak zrobiłem i faktycznie. Brakuje mi z deka wiedzy sad.gif
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.