Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak napisać zapytanie, dot. 2 tabel
SamoChwała
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 28.07.2004
Skąd: Łódź

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


Nie wiedziałem za bardzo jaki dać tytuł, a chodzi mi o zapytanie, które spełniło by następujący warunek.

Zakładając, że prowadze księgarnie i mam w Tab1 skatalogowane ksiązki. W Tab2 rejestruję datę wyporzyczenia. Teraz chcę otrzymać w wyniku wszystkie książki które nie zostały wpożyczone w zadanym okresie czasu.

Kombinowałem tak (w tym przykładzie są akurat wstawione daty, normalnie są zczytywane z pola "input".

  1. SELECT
  2. `Tab1`.`idKsiazki`,
  3. `Tab1`.`tytul`,
  4. `Tab1`.`dzial`,
  5. `Tab2`.`data`
  6. FROM `Tab1` LEFT OUTER JOIN `Tab2` ON (`Tab1`.`idKsiazki` = `Tab2`.`idKsiazki`)
  7. WHERE (`Tab1`.`dzial` = 8) AND (`Tab2`.`data` BETWEEN '2004-01-01' AND '2004-03-15')


Próbowałem też bez "LEFT OUTER JOIN " na samych warunkach "Tab1.idKsiazki<>Tab2.idKsiazki" i też lipa.

Może ktoś pomóc?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
peyn
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.09.2004
Skąd: Konin

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


Hmm, zdaje mi sie ze jednym zapytaniem tego w mySQLu nie da sie zrobic jako ze nie ma tutaj zapytan zagniezdzonych. Gdyby byly zrobilbym to tak:

  1. SELECT a.* FROM Tab1 a WHERE a.idksiazki NOT IN (SELECT b.idksiazki FROM Tab2 b WHERE (b.DATA BETWEEN '2004-01-01' AND '2004-03-15') ORDER BY b.DATA) ORDER BY a.idksiazki;


No ale skoro nie ma to zakladajac ze robisz to w php zrobilbym to tak :-)

  1. <?php
  2.  
  3. $z = &#092;"SELECT idksiazki FROM Tab2 WHERE (data BETWEEN '2004-01-01' AND '2004-03-15') ORDER BY data\";
  4. $w = mysql_query($z);
  5. while($r = mysql_fetch_array($w))
  6. {
  7. if($id=='')
  8. {
  9.  $id=$r['idksiazki'];
  10. }
  11. else
  12. {
  13. $id.=','.$r['idksiazki'];
  14. };
  15. }
  16.  
  17. //a teraz juz tylko pobranie ksiazek i ich wyswietlenie
  18. $z = &#092;"SELECT idksiazki FROM Tab1 WHERE idksiazki NOT IN (\".$id.\")\";
  19. $w = mysql_query($z);
  20. while($r = mysql_fetch_array($w))
  21.  
  22.  
  23. ?>


Tak bym to zrobil ale jak jest jakis prostrzy sposob to dajcie znac.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 01:38