Newsgroup: it.comp.software.database
Titolo: [MySQL] Fare il join tra una tabella ed una parte di un'altra

Salve a tutti, ho il problema di dover fare un join esterno tra una
tabella (di cui mi servono tutti i record) e alcuni record di un'altra
tabella. Il problema è che se uso la clausola where mi brucio i record
della prima tabella.
Del tipo se faccio:
SELECT tabella1.*
FROM tabella1
LEFT JOIN tabella2 ON 
tabella1.id
=
tabella2.id
WHERE tabella2.campo > x
Non ottengo tutti i record della tabella 1.
Mi servirebbe quindi prima una select sulla tabella 2 per prelevare i
record che mi servono, e poi fare il join con la prima tabella con la
sicurezza di non perdermi nessun record.
Qualcuno sa come posso risolvere?
ciao e grazie
-- 
Giacomo
Giacomo, alias
Marthy, A.S.Friends (239878), V.185
Tessera #139 del Club dei Mille

 Qualcuno sa come posso risolvere?
Cambiala cosě:
SELECT tabella1.*
FROM tabella1 LEFT JOIN
(SELECT 
tabella2.id
 FROM tabella2 WHERE campo>x) AS Pippo
ON 
tabella1.id
=Pippo.id
Non ricordo a partire da quale versione di MySql č supportata questa 
sintassi.
IG

Le subquery esistono a partire da MySQL 4.1.x
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|

IG
Sul server ho la versione 4.0.16-nt...=(((
Si puň risolvere in altro modo?
-- 


 Si può risolvere in altro modo?
Prima crei la tabella temporanea con i recordi secondo il filtro che ti 
serve.
Poi vai in join.

Poi vai in join.
Grazie per la risposta, solo che non so come posso creare la tabella
temporanea...è possibile fare tutto con una query sola?


 temporanea...
create temporary table temp select 
tabella2.id
 from tabella2 where campo>x
select tabella1.* from tabella1 left join temp on 
tabella1.id
=
temp.id
 > è possibile fare tutto con una query sola?
No

No
Che brutta notizia che mi hai dato...=)
Grazie, vedo come posso risolvere.


 Grazie, vedo come posso risolvere.
Che problemi particolari hai a fare due query al posto di una?

>Che problemi particolari hai a fare due query al posto di una?
PHP...=(


 PHP...=(
Con PHP puoi fare una query per volta? Non mi pare...

>Con PHP puoi fare una query per volta? Non mi pare...
No, perň ho delle esigenze...=(
Probabilmente farň cosě, ma vuoi mettere che ogni volta devo fare 3
query (1 per creare la tabella, 1 e per il join ed 1 per cancellare la
tabella)...


Ho risolto!!!
Potere del punto e virgola.
Eseguo un solo comando, ed eseguo 2 query.
In effetti avevi ragione...=))), nel senso che mi stavo confondendo
tra "query" e "comando PHP". Con lo stesso comando si possono eseguire
molte query....grazie veramente...=)))


 Non ottengo tutti i record della tabella 1.
Ciao,
prova a vedere se MySql supporta questa sintassi
-------------
SELECT tabella1.*
FROM tabella1
LEFT JOIN tabella2 ON 
tabella1.id
=
tabella2.id
 AND tabella2.campo > x
-------------
in Ms SqlServer equivale a
------------------------
SELECT tabella1.*
FROM tabella1 LEFT JOIN
(SELECT * FROM tabella2 WHERE campo>x) AS Tb2
ON 
tabella1.id
=Tb2.id
------------------------
Ciao Giorgio

------------------------
Funziona!!!!!!!
Grazie...=))))
-- 
