Wyświetlanie wyników z bazy danych - raport sprzedaży

0

Witam.
Poniżej przedstawiam zdjęcie fragmentu mojej bazy danych. Pragnę stworzyć pewien raport sprzedaży w tabelce HTML-owskiej. Co powinienem zrobić, aby dane zamówienie było wyświetlane tylko raz, a kursy znajdujące się w tym zamówieniu zostały wyświetlone w jednej komórce, np. po przecinku. W poniższym przykładzie widzimy, że zamówienie 88 wyświetlane jest 2 razy bo posiada 2 kursy:

950a80193535f.png 6f392896d682a.png
                echo '
		<H3>RAPORT CAŁKOWITY SPRZEDAŻY KURSÓW: </H3><br>

		<table style="width: 100%;" border="1" cellpadding="3">
		<tbody>
		<tr style="background:#36a572;">
			<td style="width:10%">ID ZAMOWIENIA</td>
		  <td style="width:40%">NAZWA KURSU</td>
		  <td style="width:20%">LOGIN</td>
		  <td style="width:20%">DATA ZAKUPU</td>
		  <td style="width:10%">KOSZT</td>
		</tr>
		';

		require_once "functions/polaczenie.php";
		$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
		if ($polaczenie->connect_errno!=0)
		{
			echo "Error: ".$polaczenie->connect_errno;
		}else
		{

			$rezultat = $polaczenie->query("SELECT k.nazwa, D.login, Z.id_zamowienia, Z.data_zamowienia, Z.wartosc FROM KURSY K
				JOIN ZAMOWIONE_KURSY ZK ON K.id_kursy=ZK.id_kursy
				JOIN ZAMOWIENIA Z ON ZK.id_zamowienia = Z.id_zamowienia
				JOIN DANE_UZYTKOWNIKOW D ON Z.id_dane_uzytkownikow=D.id_dane_uzytkownikow
				WHERE Z.status = 'kupione'
				group by k.nazwa;");
		  	
		  	while($kurs = mysqli_fetch_array($rezultat))
			{
				echo '
				<tr>
				<td>'.$kurs['id_zamowienia'].'</td>
				<td>'.$kurs['nazwa'].'</td>
				<td>'.$kurs['login'].'</td>
				<td>'.$kurs['data_zamowienia'].'</td>
				<td>'.$kurs['wartosc'].'</td>
				</tr>
				';
			}
		}

		echo '
		</tbody>
		</table>';
1

Zmień zapytanie:

SELECT 
    D.login, 
    Z.id_zamowienia, 
    Z.data_zamowienia, 
	GROUP_CONCAT(DISTINCT k.nazwa ORDER BY k.nazwa  SEPARATOR ', ') as Nazwa,
    Z.wartosc 
FROM   
	kursy K 
	JOIN zamowione_kursy ZK ON K.id_kursy = ZK.id_kursy 
	JOIN zamowienia Z ON ZK.id_zamowienia = Z.id_zamowienia 
	JOIN dane_uzytkownikow D ON Z.id_dane_uzytkownikow = D.id_dane_uzytkownikow 
WHERE  
	Z.status = 'kupione' 
GROUP BY
	D.login, 
    Z.id_zamowienia, 
    Z.data_zamowienia,
	Z.wartosc 
0

Super! Dzięki, widzę że muszę nauczyć się nowych funkcji :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1