Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] pobieranie danych i count jednoczesnie
szybki
post 18.06.2014, 10:21:27
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Chciałbym pobrać wszystkie rekordy i jednocześnie zliczyć ilość komentarzy na podstawie ich ID

  1. SELECT p.*, u.user_login FROM gds_offers AS p, gds_users AS u WHERE p.user_id=u.id ORDER BY p.id DESC LIMIT :LIMIT OFFSET :offset


  1. SELECT p.*, u.user_login, COUNT(c.offer_id) AS count FROM gd_offers AS p, gds_users AS u, gds_comments AS c WHERE p.user_id=u.id AND c.offer_id=p.id ORDER BY p.id DESC LIMIT :LIMIT OFFSET :offset'


Jednak opcja z COUNT pobiera mi tylko 1 rekord w dodatku liczba komentarzy jest błędna.
Go to the top of the page
+Quote Post
in5ane
post 18.06.2014, 10:28:02
Post #2





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


  1. SELECT
  2. p.*,
  3. u.user_login
  4. COUNT(c.offers_id) AS count
  5. FROM
  6. gd_offers p
  7. INNER JOIN gds_users u ON u.id = p.user_id
  8. LEFT JOIN gds_comments c ON c.offer_id = p.id
  9. ORDER BY
  10. p.id DESC

Do tego ten Twój LIMIT.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Turson
post 18.06.2014, 10:28:19
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. SELECT p.*, u.user_login, COUNT(c.offer._d) AS count FROM gd_offers AS p LEFT JOIN gds_users AS u ON p.user_id = u.id LEFT JOIN gds_comments AS c ON c.offer_id = p.id ORDER BY p.id DESC LIMIT :LIMIT OFFSET :offset
Go to the top of the page
+Quote Post
szybki
post 18.06.2014, 10:36:39
Post #4





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Poprawiłem i teraz mam:

  1. SELECT p.*, u.user_login, COUNT(c.offer_id) AS count FROM gd_offers AS p LEFT JOIN gd_users AS u ON p.user_id = u.id LEFT JOIN gd_comments AS c ON c.offer_id = p.id ORDER BY p.id DESC LIMIT :LIMIT OFFSET :offset


Jednak to nadal pobiera mi tylko 1 rekord z błędnym zliczeniem komentarzy.
Go to the top of the page
+Quote Post
Turson
post 18.06.2014, 10:38:10
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Zamiast :LIMIT i :offset wpisz ręcznie liczby i sprawdź
Go to the top of the page
+Quote Post
szybki
post 18.06.2014, 10:43:12
Post #6





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Cytat(Turson @ 18.06.2014, 11:38:10 ) *
Zamiast :LIMIT i :offset wpisz ręcznie liczby i sprawdź


Nawet jak je wyrzucę, to jest tylko 1 rekord.
Go to the top of the page
+Quote Post
nospor
post 18.06.2014, 10:44:43
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To, ze poczatkujacy nie ogarnia podstaw mysql to rozumiem. Ale zeby dwoch zawodowcow o GROUP BY nie słyszało, to tego nie ogarniam.... tongue.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Turson
post 18.06.2014, 10:50:22
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Brak group by spowodowałby pobranie zbyt dużej ilości rekordów, a pobiera za mało. Chyba, że czegoś tu nie rozumiem wink.gif

Ten post edytował Turson 18.06.2014, 10:50:45
Go to the top of the page
+Quote Post
szybki
post 18.06.2014, 10:50:31
Post #9





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Cytat(nospor @ 18.06.2014, 11:44:43 ) *
To, ze poczatkujacy nie ogarnia podstaw mysql to rozumiem. Ale zeby dwoch zawodowcow o GROUP BY nie słyszało, to tego nie ogarniam.... tongue.gif


Czyli? Group by nie ma za zadanie "posortowania"? Nie bardzo rozumiem.
Go to the top of the page
+Quote Post
nospor
post 18.06.2014, 10:52:19
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Turson ke? Chcecie pobrac ilosc komentarzy do czegos tam, wiec macie uzyc GROUP BY... bez group by ale z samym COUNT dostaniecie wszystko zgrupowane w jeden rekord co ma wlasnie miejsce
@szbki to ORDER BY sortuje.... GROUP BY grupuje...
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post 18.06.2014, 10:56:13
Post #11





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


  1. SELECT p.*, u.user_login, COUNT(c.offer_id) AS count FROM gd_offers AS p, gd_users AS u, gd_comments AS c WHERE p.user_id=u.id AND c.offer_id = p.id GROUP BY p.id DESC LIMIT :LIMIT OFFSET :offset


Ok, teraz działa smile.gif dzięki.
Jeszcze jedno pytanie... Czy użycie LEFT JOIN ma jakieś kolosalne znaczenie, czy mój sposób wyżej jest alternatywny, tożsamy? jak to jest?
Go to the top of the page
+Quote Post
nospor
post 18.06.2014, 10:57:21
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dzieki left join wyswietli ci sie rekord ktory nie ma zadnych komentarzy. W twoim sposobie, wszystkie rekordy bez komentrzy nie zostaną pobrane w ogole


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szybki
post 18.06.2014, 11:03:40
Post #13





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


Faktycznie. Już poprawiłem.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 02:01