Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem ze zliczniem
Forum PHP.pl > Forum > Przedszkole
andrzej7322
Witam,
Mo problem polega na tym, że mam takie zapytanie
  1. SELECT * FROM produkty WHERE id IN("1,2,1,2")
i to zapytanie wyświetla mi produkty ktore mają id 1 i id 2 chciałbym teraz żeby wyswietliło mi w taki sposob ze produktow o id1 jest 2 sztuki i produktow o id 2 jest tez dwie sztuki.Myślałem nad zliczniem powtarzających sie wartości w tablicy ale nie potrafię tago zrobić już dwa dni nad tym siedzę i nie moge nic wymyślić.
Z góry dziękuję za pomoc.
Fifi209
Raczej
select count(id) from produkty where id in(1,2) group by id
andrzej7322
Właśnie chodzi o to że mam produkty zapisane w ten sposob w mysql ze ktos zamowił
  1. ID|NAZWA|STATUS|PŁATNOŚĆ|DOSTAWA|PRODUKTY

i produkty które ktoś zamawia mam w takiej postaci 1,2,3,4,5,1,2,1 i dlatego stworzyłem takie zapytanie tylko że musze jakoś napisać jak 2 razy sa produkty o id 1 to wyświetla, że dwie sztuki produktu o id 1
Fifi209
Moja pomyłka haha.gif

  1. SELECT count(id) AS ile FROM tabela WHERE id IN("") GROUP BY ile
andrzej7322
To zapytanie nie działa ponieważ nie mam takiego argumentu jak ile
nospor
No bo grupuje się po ID a nie po ile. Mysl troszeczke. Pomine juz fakt, ze odpowiedź dostales w temacie co ci zamknalem winksmiley.jpg
  1. SELECT id, count(id) AS ile FROM tabela GROUP BY id
andrzej7322
to zapytanie zliczy mi wszystkie rekordy w tabeli o np id= 1 i 2, ami chodzi o to zeby zliczyc jak mam taki warunek
  1. WHERE id IN("1,2,1,2")
ile jest 1 i ile jest 2 ze np. zamowilem 2 sztuki produktu o id 1 i dwie sztuki o id2 chodzi mi o to ile razy w powtarza sie dane id w warunku zapyatnia
nospor
no to dodaj ten warunek do zapytania powyzej
andrzej7322
Gdy dam ten warunek to zapytanie wygląda tak
  1. SELECT count(id) AS ile FROM produkty WHERE id IN(".$produkty.") GROUP BY id

gdzie $produkty = 1,2,1,2 bo ktoś zamowił dwie sztuki produktu o id 1 i dwie sztuki produktu o id 2i chodzi o t ze pozniej chce otrzymac
  1. while($row=mysql_fetch_array($zapa)){
  2. echo '<tr><td class="a"><p>Produkt:'.$row['nazwa'].'</p></td>';
  3. echo'<td class="a"><p>Ilość sztuk:</p></td></tr>';
  4. }
no i chcę napisać ile on tych sztuk zamówił
a tabela produkty to jest tbela ze wszystkimi produktami i z tamtad wyciagam tylko nazwe produktu a z tej zmiennej $produkty muszę wyćiągnąć ilość sztuk w ten sposób chyba ile razy sie powtarza dana liczba
bemol
a nie lepiej stworzyć pole int, w którym będziesz przechowywał ilość sztuk. Trochę nielogicznie masz to rozwiązane, jeśli id się powtarza.
andrzej7322
Mam stworzona tabele w bazie zlecenia i ona wyglada mniejwiecej tak
  1. ID|NAZWA|STATUS|PŁATNOŚĆ|DOSTAWA|PRODUKTY

w produkty przechowuję id zamówionych produktów no i pożniej chce to pogrupować i obliczyć sztuki zamówionego produktu o danym id
nospor
aaa, to ty produkty masz jako tekst w polu? zły pomysl

Stworz tabelę wiązącą gdzie bedziesz przechowywal id

ID_ZAMOWIENIA | ID_PRODUKTU

dzieki temu wszelkie operacje będzie łatwiejsze i logiczniejsze.
andrzej7322
Nad tym myślałem o wiele wcześniej tylko myślałem też że można to inaczej rozwiązać tak jak jest teraz ale jeśli nie można to będe musiał tak zrobić bo nie chciałem zaśmiecaj bazy danych chciałem mieć wszystko w jednym rekordzie. Znalazłem takie coś żeby te id produku do tablicy wrzucic i jest taka funkcja ktora obliczba ile razy dana wartosc sie powtorzyła tylko nie potrafię póżniej z tablicy to przerobić na to aby wyświetlało mi tak jak to przedstawiłem powyżej tzn.
  1. while($row=mysql_fetch_array($zapa)){
  2. echo '<tr><td class="a"><p>Produkt:'.$row['nazwa'].'</p></td>';
  3. echo'<td class="a"><p>Ilość sztuk:</p></td></tr>';
  4. }
nospor
Cytat
bo nie chciałem zaśmiecaj bazy danych chciałem mieć wszystko w jednym rekordzie
No wlasnie rozwiązanie co ci podalem to nie jest zasmiecanie. Tak wlasnie tworzy się prawidłowo bazy danych.
Tak więc jesli masz jeszcze okazję i mozliwosc to popraw to.
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.