Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Pomoc w zapytaniu SQL
Forum PHP.pl > Forum > Przedszkole
lamcpp
Chce zrobić zapytanie, które wyświetli mi ilość artykułów dodanych w przeciągu ostatnich siedmiu dni, które nie są poradami.
moje zapytanie:
  1. SELECT COUNT(*) FROM artykul JOIN data_utworzenia ON(artykul.id_daty_utw=data_utworzenia.id)
  2. WHERE data_utworzenia.DATA >= '2011-10-14'

To zapytanie działa poprawnie ale... Wyświetla liczbę artykułów dodanych w przeciągu ostatnich dni - to jest ok, ale nie uwzględnia artykułów, które nie są poradami. Jaki warunek dołączyć, by nie uwzględniać artykułów które nie są poradami?
Tabela porada składa się z:
id - unikalny klucz tabeli
id_artykulu - klucz obcy

Probowałem sam stworzyć zapytanie, tak aby nie uwzględniało mi porad:
  1. SELECT COUNT(*) FROM artykul JOIN data_utworzenia ON(artykul.id_daty_utw=data_utworzenia.id) JOIN porada ON(artykul.id!=porada.id_artykulu)
  2. WHERE data_utworzenia.DATA >= '2011-10-14'

ale wynik jest taki, ze wyswietla mi wiecej artykułów niz mam w bazie i wiecej niz w poprzednim zapytaniu - a powinno być mniej
Prosiłbym o jakies sugestie
Dominis
Jeśli nie znajdziesz bardziej optymalnego rozwiązania to możesz zrobić tak:

  1. SELECT COUNT(*) FROM (artykul JOIN data_utworzenia ON artykul.id_daty_utw=data_utworzenia.id) LEFT JOIN porada ON artykul.id_artykulu = porada.id_artykulu
  2. WHERE data_utworzenia.DATA >= '2011-10-14' AND ISNULL(porada.id_artykulu)


Powinno Ci zwrocic polaczone tabele. Przy LEFT JOIN To polaczy tak ze tak gdzie z porady bedzie id to zaczy a tam gdzie nie bedzie to bedzie rekord NULL, Nastepnie w warunku sprawdzasz zeby wyswietlil Ci tylko NULL, dalem akurat tutaj id_artykul, ale moze byc tez porada.id

Pozdrawiam
zocha
Witam, mam problem z kilkoma zapytaniami sql prosze o pomoc smile.gif
zad1
1)napisz polecenie sql tworzac tablice miejscowosci, zakladajac ze tabela woj juz istenieje w bazie
2) napisz polecenie sql zwracajace wszystkie nazwy województw wraz z nazwa grupy wiekowej, ktora w danym wojew najlczniej planuje brac udzial w wyborach. w przypadku gdy w danym wojew nikt nie zamierza brac udzialu w wyborach powinna byc zwrocona tylko nazwa wojewodztwa bez zadnej grupy wiekowej

dodatkowo mamy tabele :
wojewodztwo w niej (id_wojewodztwa, nazwa)
miejscowosc (od_miejscowosc, id_wojewodztwa, nazwa, l_mieszkancow)
ankieta(id_ankiety, id_miejscowosc, wiek ,planuje_udzial)
typ_miejscowosci(id_typ_miejscowosci, nazwa, od_liczby_mieszkancow, do_liczby_mieszkancow)
grupa_wiekowa(id_grupy, nazwa, od_lat, do_lat)

oraz zad 2
dana jest baza danych z tabelami:
dzial(id_dzial numeric (8,0), nazwisko_imie varchar(100)), pensja numeric(8,2))
napisz polecenie sql ktore zwroci liste wsyzstkich pracownikow z dzialu ktory zatrudnia najwieksza liczbe pracownikow. jezeli beda istanialy dwa lub wiecej takich dzialow to polecenie ma zwrocic pracownikow wszystkich tych dzialow
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.