Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] 2 zapytania w jednym
Zwariowany
post 3.05.2009, 10:00:10
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 6.01.2009

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


SELECT * from `newsy` WHERE `type` = 1 ORDER BY `czas` DESC LIMIT 0 , 9;

Jak zrobić żeby ten select również odczytał ilość z tabeli komentarze gdzie `komentarze`.`iddlaartykulu` = `newsy`.`artykulid`.
Dodam że jeden komentarz w tabelii komentarze to jeden wiersz. Czyli chodzi mi o to jak od razu policzyć ilość komentarzy do artykułu?


Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
potreb
post 3.05.2009, 10:04:57
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


  1. SELECT a.*, b.* FROM newsy a LEFT JOIN komentarze b ON a.idartykulu =b.artykulid
  2. ORDER BY `a.czas` DESC LIMIT 0, 9;


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

Go to the top of the page
+Quote Post
Zwariowany
post 3.05.2009, 10:08:27
Post #3





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 6.01.2009

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


a nie da rady bez left joinu?


--------------------
Go to the top of the page
+Quote Post
potreb
post 3.05.2009, 10:13:15
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Możesz oczywiście zrobić dwie pętle pobierające newsy i później komentarze, ale wg mnie nie jest to super rozwiązanie.
  1. <?php
  2. $n = mysql_query("SELECT * FROM newsy");
  3. while($r = mysql_fetch_object($n)) {
  4. $idnews = $r->id;
  5. }
  6.  
  7. $c = mysql_query("SELECT * FROM komentarze WHERE idnewsa='$idnews'");
  8. while($r = mysql_fetch_object($c)) {
  9. echo $r->komentarz;
  10. }
  11. ?>


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

Go to the top of the page
+Quote Post
Zwariowany
post 3.05.2009, 10:15:07
Post #5





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 6.01.2009

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


nie no zdaje sobie sprawę, że 2 zapytanie to nie o to chodzi, ale wcześniej robiłem to jak potrzebowałem 2 tabele połączyć to bez left joina tylko normalnie AND itd itd. A teraz trzeba ilość wyciągnąć i z tym jest problem ;/


--------------------
Go to the top of the page
+Quote Post
phpion
post 3.05.2009, 10:19:22
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Zwariowany @ 3.05.2009, 11:15:07 ) *
A teraz trzeba ilość wyciągnąć i z tym jest problem ;/

No właśnie, pomoc kolegi ~potreb jest lekko nie na temat.

Aby zrobić to co chcesz musisz skorzystać z podzapytania oraz funkcji agregującej COUNT().
Go to the top of the page
+Quote Post
Zwariowany
post 3.05.2009, 10:23:28
Post #7





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 6.01.2009

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


kurcze takie coś próbuje ale nie działa:

SELECT * from `newsy`, (SELECT COUNT(*) FROM `komentarze` WHERE `iddlaartykulu` = `newsy`.`id`) WHERE `newsy`.`type` = 1 ORDER BY `newsy`.`czas` DESC LIMIT 0 , 9;


--------------------
Go to the top of the page
+Quote Post
phpion
post 3.05.2009, 10:43:21
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Zwariowany @ 3.05.2009, 11:23:28 ) *
nie działa:

Zawsze podawaj jaki błąd dostajesz tudzież dlaczego wg Ciebie nie działa (otrzymuejsz złe wyniki?). Tak czy srak spróbuj tak:
  1. SELECT *, (SELECT COUNT(*) FROM `komentarze` WHERE `iddlaartykulu` = `newsy`.`id`) AS ile FROM `newsy` WHERE `newsy`.`type` = 1 ORDER BY `newsy`.`czas` DESC LIMIT 0, 9;
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: 15.06.2025 - 22:04