Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Count, Left join, WHERE
Forum PHP.pl > Forum > Bazy danych > MySQL
memory
  1. $wyni =mysql_query("SELECT news.*, COUNT(idkom) as idkom
  2. FROM news LEFT JOIN komentarze ON komentarze.id=news.id
  3. GROUP BY news.id") OR die("Błąd w zapytaniu!");


  1. $sql="SELECT id FROM news WHERE id='".intval($_GET['pokaz'])."'";
  2. $wyni=mysql_query($sql);


while($row = mysql_fetch_array($wyni)) {

Mam taki maly problem
$wyni zlicza idkom "podlacza" do odpowiedniego id i wyswietla. A ja bym chcial ograniczyc id odpowiednia zmienna $_GET.

przed
id idkom
--------------
1 5
2 5
3 14
4 45


po: id= $_GET['pokaz']=3
id idkom
--------------
3 14

Zapewne trzeba uzyc WHERE id='".intval($_GET['pokaz'])." ale nie cche dzialac. Dziekuje za jakies sugestie
prond
Problem polega na tym, że grupujesz jedynie po news.id, natomiast wybierasz SELECTem news.*.

Proponuje Ci zrobić tak :

  1. SELECT
  2. news.*,
  3. COUNT(idkom) AS idkom
  4. FROM news LEFT JOIN komentarze
  5. ON (komentarze.id = news.id)
  6. GROUP BY
  7. news.*
bendi
@prond - prosimy o uważniejsze czytanie tekstu.

@memory - aplikujesz where'a, już byłeś blisko (dodałem aliasy, to czasem upraszcza sprawę)
  1. <?php
  2. $wyni =mysql_query("SELECT n.*, COUNT(idkom) as idkom
  3. FROM news n LEFT JOIN komentarze k ON k.id=n.id
  4. WHERE n.id = " . (int)$_GET['pokaz'] . "
  5. GROUP BY n.id") or die("Błąd w zapytaniu!");
  6. ?>
memory
Dzieki bendi i prond dziala,probowalem tak zrobic wczesniej ale ciagle wyskakiwal blad w zapytaniu.
bendi
Cytat(memory @ 19.02.2007, 15:23:18 ) *
Dzieki bendi i prond dziala,probowalem tak zrobic wczesniej ale ciagle wyskakiwal blad w zapytaniu.

Pewnie dodawałeś WHERE na koniec zapytania a niestety w tym przypadku kolejność ma znaczenie: http://dev.mysql.com/doc/refman/5.0/en/select.html
memory
Zeby nie zakladac nowy temat

  1. $wyni =mysql_query("SELECT kategorie.nazwa as lol
  2. FROM kategorie LEFT JOIN news ON (kategorie.idkat=news.idkat)
  3. GROUP BY kategorie.idkat") OR die("Błąd niu!");


  1. $wyni =mysql_query("SELECT news.* COUNT(idkom) as idkom
  2. FROM news, LEFT JOIN komentarze ON (komentarze.id=news.id)
  3. GROUP BY news.id")


da sie polaczyc w jedna calosc zeby odczytac wszystko z jednej petli?
bendi
  1. SELECT * FROM kategorie k
  2. LEFT JOIN news n k.idkat=n.idkat
  3. LEFT JOIN komentarze ko ON k.id=n.id

Nie wiem jak to bedzie z grupowaniem, ale to juz mozesz sobie sam sprawdzic.
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-2024 Invision Power Services, Inc.