- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- [Access&Vbscript]creazione query su tre tabelle
-
[Access&Vbscript]creazione query su tre tabelle
Ciao a tutti
Ho un problema che non so come risolvere ,L'unico metodo per farvi capire cosa vorrei fare e partire da un esempio di questo tipoHo un Database.mdb
Con dentro la tabella clienti e **annunci **Dentro Clienti ho i campi
ID(contatore) , nome(text) , indirizzo(text)Dentro Annunci ho
ID(contatore) , ID_Clienti(numerico) , cek1(num.) ,ann1(text),cek2(num),ann2(text).Adesso con una select di questo tipo :
SELECT * FROM Clienti , Annunci WHERE Clienti.ID = Annunci.ID_Clienti and Annunci.cek1='1' or Annunci.cek1='1' " ```La risposta della select saranno tutti i record che hanno la corrispondenza Clienti.ID = Annunci.ID_Clienti e che abbiano anche una corrispondenza sul campo Annunci.cek1='1' oppure sul campo Annunci.cek1='1' Adesso ,per ottenere la risposta che voglio aggiungo due if quando richiamo i vari record
<td ><%=(Re1cgl("NOME").Value)%></td> <td><%=(Re1cgl("INDIRIZZO").Value)%></td> <td >
<% if (Re1cgl("cek1"))="1" then response.write(Re1cgl("ann1")) else response.write(null) end if %>
</td>
<td >
<%if (Re1cgl("cek2"))="1" then response.write(Re1cgl("ann2")) else response.write(null) end if %>
</td>In questo modo filtro il risultato dicendogli :che se cek1 è uguale a 1 fammi vedere il record ann1 se no ,non scrivere niente .La stessa cosa nel cek2 per ann2 Adesso il mio problema avere lo stesso risultato ma avendo 3 tabelle nel database del tipo: **Clienti** ho i campi **ID**(contatore) , **nome**(text) , **indirizzo**(text) **Annunci1** **ID**(contatore) , **ID_Clienti**(numerico) , **cek1**(num.) , **ann1**(text) **Annunci2** **ID**(contatore) , **ID_Clienti**(numerico) , **cek2**(num) , **ann2**(text). Ho provato di tutto ma non trovo la soluzione ,caso mai chiedo una cosa impossibile ,se così fosse FERMATEMI!!!!:o
-
Non basta fare cosi?
**SELECT * FROM Clienti , Annunci WHERE (Clienti.ID = Annunci1.ID_Clienti and Annunci1.cek1='1' or Annunci1.cek1='1') AND (Clienti.ID = Annunci2.ID_Clienti and Annunci2.cek2='1' or Annunci2.cek2='1')Anche se "or Annunci1.cek" non so a cosa ti possa servire visto che la condizione precedente è AND
Altrimenti fai una leftjoin con le tre tabelle
**
-
@karnak said:
Non basta fare cosi?
SELECT * FROM Clienti , Annunci WHERE (Clienti.ID = Annunci1.ID_Clienti and Annunci1.cek1='1' or Annunci1.cek1='1') AND (Clienti.ID = Annunci2.ID_Clienti and Annunci2.cek2='1' or Annunci2.cek2='1')Anche se "or Annunci1.cek" non so a cosa ti possa servire visto che la condizione precedente è AND
Altrimenti fai una leftjoin con le tre tabelle
No non basta fare così ,a parte che non puoi controllare due volte lo stesso campo ,non ha senso e poi al massimo potrebbe essere
SELECT * FROM Clienti , Annunci WHERE (Clienti.ID = Annunci1.ID_Clienti and Annunci1.cek1='1') or (Clienti.ID = Annunci2.ID_Clienti and Annunci2.cek2='1' )
ma anche così non funzionaVediamo di aggiornare la situazione in questo modo
Ho il mio database
con la tabella Clienti ,così compilata
****://img697.imageshack.us/img697/2416/tabclienti.jpgAnnunciF
****://img255.imageshack.us/img255/8393/tabannuncif.jpgAnnunciV
****//img255.imageshack.us/img255/5750/tabannunciv.jpgHo fatto questa SELECT :
SELECT Clienti.nome, AnnunciF.concertif, AnnunciF.oraf, AnnunciF.giornof, AnnunciF.annuncio_f, AnnunciV.annuncio_v, AnnunciV.settimana, AnnunciV.giornov, AnnunciV.orav FROM (Clienti LEFT JOIN AnnunciF ON Clienti.ID = AnnunciF.ID_Clienti) LEFT JOIN AnnunciV ON Clienti.ID = AnnunciV.ID_Clienti WHERE (((AnnunciF.concertif)="1") AND ((AnnunciF.oraf)="giorno") AND ((AnnunciF.giornof)="lunedi")) OR (((AnnunciV.annuncio_v)="1") AND ((AnnunciV.settimana)=14) AND ((AnnunciV.giornov)="lunedi") AND ((AnnunciV.orav)="giorno")); ```Che mi riporta i seguenti record : ****://img532.imageshack.us/img532/4562/query.jpg Adesso il problema è che non mi riporta il record con ID 1645 di tabella AnnunciV . che ha tutte le condizioni della WHERE Se pero in AnnunciV ci sarebbero stati due record con ID 2 così ****://img535.imageshack.us/img535/6766/annunciv2.jpg quindi due ID 2 ma con il campo settimana diverso La risposta della select(citata sopra) è questa ****://img709.imageshack.us/img709/5246/query2c.jpg :x:x Qualcuno puo illuminarmi?