Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Odczyt z bazy powstarzających się rekordów
Forum PHP.pl > Forum > Przedszkole
kubax33
Mam tabelę

NAZWA | ID_PRODUKTU | SZTUK
spodnie 1 | 1000 | 21
spodnie 2 | 1000 | 11
czapka | 2000 | 6
bluzka | 5000 | 6
spodnie 3 | 1000 | 55

I teraz chciałbym wyciągnąć wszystkie dane z powtarzającego się rekordu ID_PRODUKTU 1000 czyli wynik powiedzmy echo otrzymany ma być taki:

PRODUKT: 1000 NAZWA: spodnie 1, spodnie 2, spodnie 3 SZTUK: 87

Czyli chcę mieć podane wszystkie nazwy i zliczoną ilość sztuk przy czym jak widać ma być to jeden wynik z pobranymi wszystkimi nazwami i zliczoną ilością sztuk bo wychodzi mi jak na razie jedno pod drugim i nie ma co z tym zrobić.

Czy jest w ogóle opcja wyfiltrowania tego? ewentualnie nakierujcie mnie co tutaj może dobrze to obsłużyć.
kapslokk
Masz dwie możliwości.

1. Układanie sobie danych już po pobraniu poszczegolnych wierszy w pętli. Czyli pobierasz tak jak mowisz jedno pod drugim i robisz np pętle:
$rows = [];
  1. while($row = ... ) {
  2. $rows[$row['ID_PRODUKTU']]['nazwy'][] = $row['NAZWA'];
  3. $rows[$row['ID_PRODUKTU']]['sztuki'] += $row['SZTUK'];
  4. }

Później wystarczy polaczyc nazwy przecinkiem i jestes w stanie wyswietlic to co potrzebujesz

2. W zapytaniu użyjesz sum() do policzenia sztuk, group_concat() do polaczenia nazw przecinkiem, i group by ID_PRODUKTU.
kubax33
Ciężko mi zrozumieć... Wyświetlam dane w pętli:

  1.  
  2. <?php
  3. $sql = mysql_query("SELECT * FROM tabela");
  4.  
  5. while($info = mysql_fetch_array($sql))
  6. {
  7. echo 'PRODUKT: '.$info['ID_PRODUKTU'].' NAZWA: '.$info['NAZWA'].' SZTUK: '.$info['SZTUK'].'';
  8.  
  9. }
  10. ?>
  11.  


No i wiadomo z tabeli, którą podałem wyświetli mi wszystkie rekordy jedno pod drugim, ale nie rozumiem, jak użyć twojej metody.
kapslokk
Więc nie wyświetlaj danych w tej pętli. W tej pętli stwórz sobie tablicę o strukturze, która umożliwi Ci wyświetlenie danych w takiej formie w jakiej potrzebujesz. Wyświetlisz sobie później.
borabora
  1. SELECT id_produktu, group_concat(DISTINCT nazwa separator ', ') AS nazwy, sum(sztuk) AS ile FROM tabela GROUP BY id_produktu
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.