Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PDO, grupowanie.
boosik01
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 19.08.2009

Ostrzeżenie: (10%)
X----


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 (IMG:style_emoticons/default/wink.gif) Bardzo proszę o pomoc (IMG:style_emoticons/default/wink.gif)

PS. Szukałem po necie, ale jeśli wy coś znajdziecie tzn że źle szukałem, i poprosił bym o linka (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
sajegib
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

Ostrzeżenie: (0%)
-----


normalnie robisz pdo->query('zapytanie')

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

i tyle (IMG:style_emoticons/default/wink.gif)

bo z w/w wynika ze chcesz pobrac tylko jedna kolumne, tak?
Go to the top of the page
+Quote Post
boosik01
post
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 19.08.2009

Ostrzeżenie: (10%)
X----


Nie rozumiesz mnie (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
sajegib
post
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

Ostrzeżenie: (0%)
-----


  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 (IMG:style_emoticons/default/wink.gif)

o to chodzi?
Go to the top of the page
+Quote Post
boosik01
post
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 19.08.2009

Ostrzeżenie: (10%)
X----


Nie, nie o to (IMG:style_emoticons/default/wink.gif) Znam php w stopniu wyższym niż podstawowy, więc wiem co to limit (IMG:style_emoticons/default/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...
Go to the top of the page
+Quote Post
SlimShady
post
Post #6





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 11.05.2013

Ostrzeżenie: (0%)
-----


  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?
Go to the top of the page
+Quote Post
boosik01
post
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 19.08.2009

Ostrzeżenie: (10%)
X----


Nie, nie starczy (IMG:style_emoticons/default/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ść (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
pmir13
post
Post #8





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


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().

Ten post edytował pmir13 11.05.2013, 20:48:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:04