Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem do 2 tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
Mion
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
nospor
  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
Mion
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]
nospor
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')
Mion
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'
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-2025 Invision Power Services, Inc.