Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL]Pomoc w zapytaniu SQL
lamcpp
post
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

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


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





Grupa: Zarejestrowani
Postów: 77
Pomógł: 19
Dołączył: 13.02.2010

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


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


--------------------
www.maxcode.pl
Go to the top of the page
+Quote Post
-zocha-
post
Post #3





Goście







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
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: 22.08.2025 - 10:23