![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 0 Dołączył: 24.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam.
Mam problem ze zbudowaniem odpowiedniego zapytania nad którym siedzę już dobrych parę dni. Tworzę małą bibliotekę i mam 2 tabele: "historia" i "czyteln" Tabela "historia" ma pola: "Nr_czyt", "Data_wyp" Tabela "czyteln" ma pola: "Nr_czyt", "Imie", "Nazwisko". Cel jaki chcę osiągnąć: Jest formularz w którym określam rok i miesiąc - chcę dla podanej daty (rok i miesiąc) mieć wylistowanych wszystkich czytelników, którzy nic nie wypożyczyli w tym okresie - tzn. których Nr_czyt za dany okres nie istnieje w tabeli historia. Kompletnie nie wiem jak to zrobić. Zrobiłem inne zapytanie, które listuje mi liczbę wypożyczeń użytkowników, którzy coś wypożyczyli - coś w rodzaju - "Kto najwięcej wypożyczył w podanym okresie" i z tym nie ma problemu: SELECT h.Nr_czyt, c.Imie, c.Nazwisko, COUNT( * ) AS l_wyp FROM historia AS h JOIN czyteln AS c ON h.Nr_czyt = c.Nr_czyt WHERE (DATE_FORMAT(h.Data_wyp,'%Y-%m') = '$rok-$miesiac') GROUP BY c.Imie, c.Nazwisko, c.Nr_czyt"). Ale jak zrobić listę czytelników, którzy nic nie wypożyczyli - NIE WIEM. Proszę o pomoc... |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Albo NOT EXISTS
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Fakt, nawet lepiej i prościej (IMG:style_emoticons/default/specool.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 0 Dołączył: 24.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Jak to zapisać poprawnie z użyciem NOT EXISTS?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 0 Dołączył: 24.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Niestety nie działa (IMG:style_emoticons/default/sad.gif) - wypisuje wszystkich czuytelników, nawet tych, którzy coś wypożyczyli... Adi32 jak zastosować poprawnie Twoją radę - tak jak pisałem wcześniej nie udaje mi się to - chyba coś ze składnią jest nie tak :-( Ten post edytował cent4 3.07.2011, 22:10:12 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 0 Dołączył: 24.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Wywołuję takie zapytanie ale dostaję mnóstwo informacji :-(
SELECT DISTINCT h.Nr_czyt, c.Imie, c.Nazwisko FROM czyteln c, historia h WHERE c.Nr_czyt NOT IN (SELECT DISTINCT Nr_czyt FROM historia WHERE DATE_FORMAT(Data_wyp,'%Y-%m') = '2010-08') |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Wywołuję takie zapytanie ale dostaję mnóstwo informacji :-(
spróbuj wpisać na sztywno jakąś datę (zgodnie z formatem w bazie), bez DATE_FORMAT |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 0 Dołączył: 24.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
też całe mnóstwo danych.
Ale date format musi być - bowiem podaję tylko rok i miesiąc, a są jeszcze dni i dni muszą być wszystkie z danego miesiąca uwzględniane - więc musi to działać z date format |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 0 Dołączył: 24.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
nospor dziękuję bardzo.
Wszystko działa dokładnie tak jak chciałem. Dziękuję jeszcze raz. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 21:18 |