A o GROUP BY słyszał czy akurat spał? Widzę, że bez gotowca sie chyba nie obejdzie:
SELECT r.nazwa, GROUP_CONCAT(c.nazwa) AS auta
FROM cars_race AS cr
LEFT JOIN races AS r ON cr.idrace = r.id
LEFT JOIN cars AS c ON cr.idcars = c.id
GROUP BY cr.idrace
i w wyniku otrzymasz JEDEN wiersz dla KAŻDEGO wyścigu:
Kod
nazwa => 'wyscig o zlote majtki', auta => 'honda,suzuki,skyline'
Ale możesz też dać
SELECT r.nazwa, c.nazwa AS auto
FROM cars_race AS cr
LEFT JOIN cars AS c ON cr.idcars = c.id
WHERE cr.idrace = 1
i dostaniesz TYLE wierszy dla każdego wyścigu, ILE było w nim samochodów:
Kod
nazwa => 'wyscig o zlote majtki', auto => 'honda'
nazwa => 'wyscig o zlote majtki', auto => 'suzuki'
nazwa => 'wyscig o zlote majtki', auto => 'skyline'
I to drugie opisałem Ci w swoim poście wyżej, ale w kolejnym napisałeś już coś innego jako przykład i to jest to co jako pierwsze dałem. I nie nie da się tak, by było tyle kolumn w wierszu wyścigu ile samochodów i było to wydajne, bo jeden wyścig będzie miał 5, a inny 2 i co? Co wstawisz do pozostałych kolumn w tym, gdzie są tylko 2 auta? Nulle? Zły pomysł. Lepiej wrzucić to do jednej i sobie już po stronie skryptu php obrobić jak chcesz. Przynajmniej bazy nie zarżniesz jakimiś cudacznymi zapytaniami.
Jak widzisz to samo uzyskałem na 2 sposoby, ale każdy z nich kładzie nacisk na coś innego i tylko od tego zależy które będzie użyte. A co innego można było wyczytać w Twoim pierwszych i kolejnych postach jako sens zapytania. Ba... Nawet po ostatnim poście trudno wnioskować jaka ma być struktura wyniku.
Czy ma to być:
1
=> array( 'name' => 'wyscig o zlote majtki', 'cars' => 'honda,suzuki,skyline' ), 2
=> array( 'name' => 'wyscig inny', 'cars' => 'honda,skyline' ));
lub
1
=> array( 'name' => 'wyscig o zlote majtki', 'cars' => array( 'honda', 'suzuki', 'skyline' ) ), 2
=> array( 'name' => 'wyscig inny', 'cars' => array( 'honda', 'skyline' ) ));
Czy może zawsze będzie to jeden wyścig i forma
array( 'name' => 'wyscig o zlote majtki', 'cars' => array( 'honda', 'suzuki', 'skyline' ) );
lub
array( 'name' => 'wyscig o zlote majtki', 'cars' => 'honda,suzuki,skyline' );
Tak więc trudno zasugerować Ci sensowne rozwiązanie, skoro nawet nie w pełni wiadomo czego chesz w wyniku. Gdyby nie ostatni post to można by zgadywać o co Ci chodzi z tym wkladaniem do tablicy.
Zresztą nawet teraz tylko zgaduję i dałem Ci aż CZTERY warianty tego o co pytałeś. Tak nieprecyzyjnie wypowiedziałeś się. I to jest problem piszących tutaj pytania. DLA NICH pytanie jest proste, ale dla odpowiadających i zaawansowanych userów oznacza to nieraz X możliwości odpowiedzi, nieco różniących się, a co za tym idzie, nieraz zupełnie inaczej możliwych do uzyskania.