Ciao, come faccio a selezione + risultati da più tabelle=
tipo:
SELECT * FROM table1 AND table2 WHERE 1...
Ciao, come faccio a selezione + risultati da più tabelle=
tipo:
SELECT * FROM table1 AND table2 WHERE 1...
SELECT * FROM table1, table2 WHERE 1...[supersaibal]Originariamente inviato da GoldEmish
Ciao, come faccio a selezione + risultati da più tabelle=
tipo:
SELECT * FROM table1 AND table2 WHERE 1... [/supersaibal]
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
SELECT * FROM tabella1
JOIN tabella2 ON [condizione di join]
WHERE....
NB: se su diverse tabelle hai uguali nomi di campo per evitare ambiguità devi fare tipo:
SELECT tabella1.campo, tabella2.campo....
se vuoi evitare di scrivere tutto il nome della tabella puoi fare:
SELECT a.campo, b.campo....
FROM tabella1 AS a
JOIN tabella2 AS b
ON...
WHERE...
-
La condizione di join è difficile spiegartela senza avere un esempio concreto.. ma, ad esempio, può essere l'uguaglianza tra due campi delle due tabelle.. metti che in una tabella hai un elenco di articoli, con i lroo id, e in un'altra un elenco di ordini con un campo che tramite id individua l'articolo... se vuoi mettere insieme le tabelle per sapere, ad esempio, quanti ordii ha avuto un articolo.. la consizione di join sarà qualcosa tipo:
ON a.id = b.id_articolo
:cauz:
[supersaibal]Originariamente inviato da piero.mac
SELECT * FROM table1, table2 WHERE 1...
[/supersaibal]
in effetti non avevo pensato che potrebbe non aver bisogno di un JOIN ma solo di prendere più dati da + tabelle in un colpo solo
vabbè.. l'insonnia.. cmq ora sa una cosa in più, anche se magari non gli serve![]()
Guarda che quello che ho postato corrisponde ad un INNER JOIN... stile theta, mentre quello postato da te e' un LEFT JOIN stile ANSI-92.[supersaibal]Originariamente inviato da }gu|do[z]{®©
in effetti non avevo pensato che potrebbe non aver bisogno di un JOIN ma solo di prendere più dati da + tabelle in un colpo solo
vabbè.. l'insonnia.. cmq ora sa una cosa in più, anche se magari non gli serve[/supersaibal]
Resta da vedere quello che tu hai anticipato cioe' le condizioni dell'unione.
Altrimenti per unire risultati esiste anche UNION o la creazione di tabelle temporanee...
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
sì, ma senza condizione di JOOIN si può usare anche per prelevare dati diversi e non legati tra loro.. o no?![]()
ragazzi non mi funzia....
ho scritto questo:
E mi da errore :Codice PHP:
[riga54] $result = mysql_query("SELECT * FROM table1, table2 WHERE 1", $db);
[riga55] $row = mysql_fetch_array($result);
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in index.php on line 55
perchè? :master:
Ma che senso avrebbe selezionare dati da due tabelle non in relazione tra di loro? E senza condizioni?[supersaibal]Originariamente inviato da }gu|do[z]{®©
sì, ma senza condizione di JOOIN si può usare anche per prelevare dati diversi e non legati tra loro.. o no?[/supersaibal]
Verrebbe fuori un prodotto cartesiano di uno contro tutti con la inner join. con la forma ansi (left join) sei obbligato a mettere una clausula ON. Le tabelle relazionate fanno parte dello stesso db e sono solo una normalizzazione di dati. Sono di fatto un db unico dove relazioni errati o mancanti possono rendere l'intero db inconsistente.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
metti la segnalazione di errore con DIE. non e' valido il resource id number.[supersaibal]Originariamente inviato da GoldEmish
ragazzi non mi funzia....
ho scritto questo:
E mi da errore :Codice PHP:
[riga54] $result = mysql_query("SELECT * FROM table1, table2 WHERE 1", $db);
[riga55] $row = mysql_fetch_array($result);
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in index.php on line 55
perchè? :master: [/supersaibal]
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
sì ok.. io uso sempre JOIN per esplicitare meglio...[supersaibal]Originariamente inviato da piero.mac
Ma che senso avrebbe selezionare dati da due tabelle non in relazione tra di loro? E senza condizioni?
Verrebbe fuori un prodotto cartesiano di uno contro tutti con la inner join. con la forma ansi (left join) sei obbligato a mettere una clausula ON. Le tabelle relazionate fanno parte dello stesso db e sono solo una normalizzazione di dati. Sono di fatto un db unico dove relazioni errati o mancanti possono rendere l'intero db inconsistente.
[/supersaibal]
in effetti senza condizioni viene un prodotto cartesiano
pensavo ad un modo di rispiarmiarsi due selct.. ma in effetti mi sa che non è fattibile![]()