Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Count, Left join, WHERE, problem z ich uzyciem
memory
post
Post #1





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


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





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


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.*


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
Go to the top of the page
+Quote Post
bendi
post
Post #3





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


@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. ?>


Ten post edytował bendi 19.02.2007, 12:20:16


--------------------
Go to the top of the page
+Quote Post
memory
post
Post #4





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


Dzieki bendi i prond dziala,probowalem tak zrobic wczesniej ale ciagle wyskakiwal blad w zapytaniu.
Go to the top of the page
+Quote Post
bendi
post
Post #5





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


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


--------------------
Go to the top of the page
+Quote Post
memory
post
Post #6





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


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





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


  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.


--------------------
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 Aktualny czas: 19.08.2025 - 23:21