select su piu tabelle

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
prima di incasinarmi completamente avrei bisogno dell'intervento di (non in ordine di importanza) sant eliox || sant luke || sant pole (o polo visto che mi sembra di venezia).

ho il problema che devo fare una selezione su 4 tabelle il problema (per me) è alquanto grosso. inoltre la spiegazione è lunga quindi invece di scrivere allego un file PROBLEMA.doc in modo che chi ha la pazienza può leggerlo e dirmi, almeno, se sono sulla buona strada o su quella della perdizione.

p.s.
se qualcuno mi risponde:"prometto che non invierò più un 3d al giorno"
 
ho letto la risposta di eliox a sarablack “interrogazioni multiple” e quindi (per chi ha avuto la pazienza di giobbe di leggere il mio problemi.doc) il problema può essere risolto (?chiedo conferma) nella segunte maniera:

faccio una JOIN

SELECT * FROM tabella1
INNER JOIN tabella2 ON tabella1.id_D=tabella2.id_D
INNER JOIN tabella3 ON tabella1.id_D=tabella3.id_D
INNER JOIN tabella4 tabella1.id_D=tabella4.id_D

WHERE

tabella1.provincia=$provincia AND//gli $ da POST
tabella1.comune=$comune //o tutti

AND //and “A”
//vedi nota sotto
tabella2.car1=’1’ // può essere una combinazione di car1 a car11
AND
……..
tabella3.car12=’1’ // può essere una combinazione di car12 a car25
AND
…………….
tabella4.car26=’1’ // può essere una combinazione di car26 a car39
…………….
ORDER BY
tabella1.provincia, tabella1.comune, tabella1.nome

LIMIT…..

mi sto avvicinando???
NOTA:
seleziono quindi tutti i nomi che hanno TUTTE le caratteristiche richieste

se dopo and “A” inserisco una parentesi e scrivo

(
tabella2.car1=’1’
OR
…………………
)
…………………

seleziono i nomi che hanno ALMENO una delle carattresistiche richieste?


p.s.
attenzione o voi che postate… spulcio sempre tutti i 3d
 
Ultima modifica:
scusate , ma proprio non so come cavarmela sono circa 60 ore che ci sto dierto (da giovedì) ma proprio non risco a cavare un ragno da un buco:dipser:

Costruisco la selct in funzione della provincia e/o comune e/o delle selzioni da chek box
Se non faccio alcuna selzione da cheh box (cioè non mi interessano tabella2, tabella3 e tabella4)

La selct risulta

PHP:
 $sel_TOT=” SELECT id_D, tsch, raso, marca, via, loc, strad, tel FROM nome  WHERE id_p='97'  ORDER BY tsch, com1, raso”; ecc..
E tutto funziona(è evidente)
Se faccio delle selezioni da chek box la select risulta (ho toccato solo tabella2)

PHP:
$sel_TOT=” SELECT id_D, tsch, raso, t, via, loc, strad, tel FROM nome INNER JOIN tabella2 ON nome.id_D=tabella2.id_D WHERE id_p='97' AND tabella2.id_s1='1' AND tabella2.id_s2='1' ORDER BY tsch, com1, raso “;

$query=msql_qery($sel_TOT);

While ($riga=mysql_fetch_array/$query)){……….}

E questo è il risultato

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\regioni\demo-01.php on line 277

Ho controllato (diverse volte) le tabelle, I nomi delle tabelle, dei campi ed i loro valori sono giusti


Proprio non riesco a capire dove sbaglio (eppure da qualche parte sbaglio)
 
mysql_fetch_array ti da errore se mysql_query restituisce un array vuoto, fai prima un controllo con mysql_num_rows
 
:fonzie::jolly::fonzie:
intanto grazie, ma....

eureka!!!!!!!!!!gridò archimede scoprendo che un corpo in acqua si bagna
ed funziona!!!! grido io.
se a qualcuno serve do la soluzione (in fondo stupida e forse gia conosciuta):

PHP:
$sel_TOT=SELECT t1.id_D, t1.nome, t1.telefono FROM tabella1 AS t1, tabella2 AS t2, tabella3 AS t3, tabella4 AS t4

WHERE t2.id_D=t1.id_D AND t3d_D=t1.id_D AND ..... t2.car1='1' AND... t4.car35='1'...

ORDER BY t1.provincia, t1.comune, t2.nome

(apici omessi)
per eliox: ci siamo incrociati nella risposta:hammer:
 

Discussioni simili