Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zapytaniem do 2 tabel, i wybraniem listy wszystkich pol
Mion
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 6
Dołączył: 7.03.2005

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


Mam dwie tabele i duży problem sad.gif
hottoplista ] id | nazwa_serwisu | adres_www
statysytka_dzienna ] ids | dzien | suma_odslon

Tabela [hottoplista] przechowuje dane tyczące serwisu www.
Tabela [statysytka_dzienna] przechowuje ilość odsłon (suma_odslon) serwisu (id=ids) w danym dniu (dzien) Do tej tabeli są dodawane te serwisy które w danym dniu miały conajmnej jedną odsłonę.

Wykonanie zapytania:
  1. SELECT h.id, s.ids, s.suma_odslon, s.dzien
  2. FROM hottoplista h LEFT JOIN statysytka_dzienna s ON h.id = s .ids
  3. WHERE s.dzien='2006-07-03';

Zwraca mi rekordy serwisów które występują w tabeli statysytka_dzienna czyli miały w danym dniu conajmnij jedną odsłonę.

Jak powinno wyglądać zapytanie które wybrało by wszystkie rekordy z tabeli hottoplista powiązane z statysytka_dzienna nawet te nie występujące w statysytka_dzienna. Czyli żeby powstała pełna lista serwisów. A tym które nie miały w danym dniu jeszcze odsłony (suma_odslon) można było by przypisać suma_odslon=0 lub NULL
Mam nadzieję, że nie opisałem tego zbyt zawile.
Proszę o pomoc->Dziękuję
ps. dostępna wersja mysql to: MySQL - 4.1.19-log

Ten post edytował Mion 3.07.2006, 11:07:04
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




  1. SELECT h.id, s.ids, s.suma_odslon, s.dzien
  2. FROM hottoplista h LEFT JOIN statysytka_dzienna s ON h.id = s .ids
  3. WHERE s.dzien='2006-07-03' OR s.ids IS NULL


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

"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
Mion
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 6
Dołączył: 7.03.2005

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


Dziękuję, ale niestety coś jest nie tak.
Tabela: [hottoplista] zawiera 656 rekordów natomiast podane przez Kolegę zapytanie zwraca tylko 403 rekordy czyli nie wybierane są wszystkie rekordy z tabeli [hottoplista]
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




aaa, no tak...
  1. SELECT h.id, s.ids, s.suma_odslon, s.dzien
  2. FROM hottoplista h LEFT JOIN statysytka_dzienna s ON (h.id = s.ids AND s.dzien='2006-07-03')


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

"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
Mion
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 6
Dołączył: 7.03.2005

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


O to chodziło smile.gif
Wielkie dźwięki dla Kolegi

Kolejny problem z tym zapytaniem... Mianowicie jak powinno wygladać zapytanie aby wybrać TYLKO rekordy z danej kategorii czy dodatkowa kolumna (INT)kategoria w tabeli hottoplista Obecne zapytanie wygląda tak:
  1. SELECT h.id, h.kategoria, s.ids, s.suma_odslon, s.dzien
  2. FROM hottoplista h LEFT JOIN statysytka_dzienna s
  3. ON (h.id = s.ids AND s.dzien='2006-07-04)
  4. ORDER BY s.suma_odslon DESC


Jeśli dodam w klauzuli ON (h.id = s.ids AND s.dzien='2006-07-04' AND h.kategoria='11') nie uzyskuje porażadanego efektu sad.gif

/** PO CHWILI **/
Już wiem należy dodać warunek:
ON (h.id = s.ids AND s.dzien='2006-07-04) WHERE h.kategoria='11'

Ten post edytował Mion 4.07.2006, 16:33:10
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: 20.08.2025 - 02:44