Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PDO, grupowanie.
Forum PHP.pl > Forum > PHP
boosik01
Witam!

Jak zrobić grupowanie w pdo? Tzn. mam jedną table:

tablenam:
id, id_column1, id_column2

I teraz tak:
id_column1 = 1 ;
id_column2 = 3 ;

______________
Kolejny rekord:
id_column1 = 1 ;
id_column2 = 4 ;

I chce wyświetlić wyniki aby wyglądało to mnie więcej tak:

id_column1 ma wartości:
3, 4

Szczerze mówiąc to nawet nie wiem czy tu trzeba zastosować group by, czy może coś innego wink.gif Bardzo proszę o pomoc wink.gif

PS. Szukałem po necie, ale jeśli wy coś znajdziecie tzn że źle szukałem, i poprosił bym o linka wink.gif
sajegib
normalnie robisz pdo->query('zapytanie')

a zapytanie powinno wygladac mniej wiecej tak: SELECT id_column1 FROM twoja_tabela

i tyle wink.gif

bo z w/w wynika ze chcesz pobrac tylko jedna kolumne, tak?
boosik01
Nie rozumiesz mnie wink.gif

Chce by pobrało mi wszystkie dane gdzie id_column1 = 1, i to wiem jak zrobić (warunek WHERE), ale gdy za pomocą pętli wyświetlę to, wtedy będzie coś takiego:

id_column1 = 3 ;
id_column1 = 4 ;

a ma być: id_columnd1 = 3 (najniższa wartość).
To też by nie był problem, ale mam takich id_columnd z 20, 30 (czyli id_column1, id_column2 itd...) i do tego są przypisywane jakieś informacje (w tym wypadku w postaci integer), i chce by podczas wyświetlania wyników przez pętle foreach id_columnX nie powtarzała się, tylko był pokazywa najniższy ID (ten przypisany).

Mam nadzieje że teraz w miarę jasno się wyraziłem wink.gif
sajegib
  1. SELECT * FROM twoja_tabela ORDER BY id_column1 ASC LIMIT 1


order by - sortujemy wedlug id_column1 rosnąco
LIMI1 - wyświetlamy tylko jeden wynik

załatwione wink.gif

o to chodzi?
boosik01
Nie, nie o to wink.gif Znam php w stopniu wyższym niż podstawowy, więc wiem co to limit wink.gif

By to było dobre rozwiązanie lecz to da efekt tylko dla jednego, a ja mam taki rekordów z kilka set i chodzi o to żeby powiązane ze sobą column1 i column2 były wypisane jeden raz. Nic innego niż group by nie przychodzi mi do głowy, lecz w PDO nie bardzo, a raczej nic nie działa...
SlimShady
  1. $column1 = $pdo -> query("SELECT id_column1 FROM tablenam");
  2.  
  3. echo 'column1 ma wartości: <br/>';
  4. while($col = $column1 -> fetch()) {
  5. echo $col['id_column1'].' ';
  6. }


takie cuś Ci nie starczy?
boosik01
Nie, nie starczy smile.gif
Dobra wielkie dzięki za próbę pomocy, ale jednak po namyślę opcję w moim projekcie zrobię zupełnie inaczej, więc ten problem odchodzi z głowy, ale jeśli ktoś coś zrozumiał z mojego bełkotu to będęwdzięczny jak poda mi rozwiązanie - ot taka nauka na przyszłość wink.gif
pmir13
Pewnie chodzi o :
  1. SELECT id_column1, GROUP_CONCAT( id_column2 ORDER BY id_column2 ASC ) AS 'ma_wartosci'
  2. FROM tablenam
  3. GROUP BY id_column1


Ewentualnie jeśli potrzebna jest tylko najniższa wartość to MIN( id_column2 ) zamiast tego GROUP_CONCAT().
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.