Newsgroup: it.comp.software.database
Titolo: Problema con left join

Ciao a tutti ragazzi ! Ho questo tipo di esigenza. Date le due tabelle
sotto
elencate:
tabella "DMaster_Capogruppo"
ID_Trattativa | nome_cliente
1                    pippo
2                    pluto
3                    paperino
tabella "VERIFICA"
ID_TRATTATIVA | nome_cliente
1                                pippo
4                                pippo
7                                pippo
3                                pippo
8                                pippo
devo accodare alla tabella 2, il risultato che ha come id_sfa 2
inserito
nella tabella 1. Ho fatto questo tipo di codice SEGUENTE:
INSERT INTO VERIFICA (ID_TRATTATIVA) SELECT * FROM DMaster_Capogruppo
LEFT
JOIN VERIFICA ON ID_TRATTATIVA = ID_Trattativa WHERE ID_Trattativa IS
NULL =
$inserimento;
ovviamente non funziona. Potete aiutarmi a capire cortesemente perchè
?
Vi ringrazio e resto in attesa di un vostro riscontro.
Ciao a tutti.
Gianluca

 
Le tabelle DMaster_Capogruppo e VERIFICA  hanno due campi ciascuno.
Tu cerchi di inserire nel campo ID_TRATTATIVA quattro campi
(SELECT * FROM DMaster_Capogruppo LEFT JOIN VERIFICA)
Questo e' un esempio di "Cargo Cult programming". ( 
http://en.wikipedia.org/wiki/Cargo_cult_programming
 )
Hai bisogno di un corso base di SQL.
ciao
gmax
-- 
 _  _ _  _
(_|| | |(_|><  The Data Charmer
 _|
http://datacharmer.org/

 
http://datacharmer.org/
********** Hai perfettamente ragione, prendevo tutta la tabella ed
assegnavo un valore all'id_trattativa. Ho rimodificato il codice come
segue:
$query = "INSERT INTO VERIFICA (ID_TRATTATIVA)" . "SELECT ID_Trattativa
FROM DMaster_Capogruppo LEFT JOIN VERIFICA ON ID_TRATTATIVA.VERIFICA =
ID_Trattativa.DMaster_Capogruppo WHERE ID_Trattativa IS NULL";
Secondo te ora dovrebbe funzionare ?
Ti ringrazio per la disponibilità ed attendo tue notizie.

 Secondo te ora dovrebbe funzionare ?
No. Come ha anche giá detto Giuseppe, hai bisogno di un corso SQL base.
Benjamin

Ciao Benjamin, lo so che non sono bravo su sql, ma ho bisogno che
qualcuno mi dica almeno se sto facendo la cosa giusta o meno. Proviamo
a ricapitolare.
Il codice che avevo scritto era abbastanza poco chiaro anche perchè è
da poco che uso sql e penso si vede da un miglio di distanza.
Ho però fatto delle altre query su database e andando a rileggere i
codici che su altre pagine che sto facendo funzionano, effettivamente
(correggimi se sbaglio), ho indicato nel newsgroup un codice senza
alcuna logica.
Ho rivisto un pò tutto e sono giunto a queste conclusioni:
1. la prima parte del codice dovrebbe solo eseguire la selezione left
join su due tabelle e questo è quello che ho provato a scrivere:
$estrazione_id_sfa_non_corrispondenti = SELECT ID_Trattativa FROM
DMaster_Capogruppo LEFT JOIN VERIFICA ON ID_TRATTATIVA.VERIFICA =
ID_Trattativa.DMaster_Capogruppo WHERE ID_Trattativa IS NULL;
questa query va eseguita e quindi credo si debba scrivere:
$dbrisultato = mysql_query($estrazione_id_sfa_non_corrispondenti, $db);
detto questo abbiamo una variabile che contiene il risultato. Per poter
scrivere ora il risultato in una delle due tabelle, forse dovrei usare
il seguente codice:
while ($line = mysql_fetch_array($dbrisultato, MYSQL_NUM))
{
	foreach ($line as $col_value)
	{
	$inserimento_dati = "insert into VERIFICA" . "(ID_TRATTATIVA)"."VALUES
 ('$col_value')";
	$esecuzione_inserimento = mysql_query($inserimento_dati,$db);
	}
}
cosa ne pensi ? Grazie e attendo un tuo giudizio.
Ciao e buona giornata
Benjamin Gufler ha scritto:


 ID_Trattativa.DMaster_Capogruppo WHERE ID_Trattativa IS NULL;
Scusa ma la tabella ID_TRATTATIVA/ID_Trattativa dov'č?
E "DMaster_Capogruppo" E "verifica" non sono il nome di una tabella?
Vuoi fare una cosa del genere per caso?
SELECT T2.<campo>
FROM <tabella1> AS T1 LEFT JOIN <tabella2> AS T2 
ON T1.<CampoChiave> =T2.<CampoChiaveRiferitoT1>
WHERE T1.<tuocampo> IS NULL;
Prendo il campo della seconda tabella dove il tuocampo della prima
tabella=Null

 tabella=Null
Ciao Andrea e grazie per l'aiuto. Dunque, i nomi ID_TRATTATIVA e
ID_Trattativa sono nomi di colonne delle due tabelle che si chiamano
"VERIFICA" e "DMaster_Capogruppo".
Detto questo, io devo prendere tutti i codici cliente presenti nella
colonna ID_Trattativa e che NON  sono presenti anche nella colonna
ID_TRATTATIVA e aggiungerli alla fine della colonna ID_TRATTATIVA.
Spero di essermi spiegato bene. Grazie ed attendo tue notizie.
Gianluca

 tabella=Null
esatto voglio ottenere proprio questo risultato e questo risultato va
scritto nella tabella che porta il nome di "VERIFICA" in coda ai codici
clienti già presenti nella colonna della tabella. Vuoi che ti converto
la tua form con i miei codici così vediamo se funziona ?
Una volta fatto questo codice però devo comunque continuare con il
codice che mette il risultato in un array e poi lo scrive giusto ?
Attendo tue notizie.
Gianluca

 
http://en.wikipedia.org/wiki/Cargo_cult_programming
 )
LOOOOOOOOOOL :-))))

The man with two watches ha scritto:

Perdonami forse sono un pò tardo a capire, ma che significa ?
Ho provato a riscrivere la sintassi che ora corrisponde a:
$id_sfa_non_corrispondenti = SELECT AT from DMaster_Capogruppo left
outher join VERIFICA on
ID_Trattativa = ID_TRATTATIVA where ID_TRATTATIVA is null;
$dbrisultato = mysql_query($id_sfa_non_corrispondenti, $db);
print "<table border =\"0\">\n";
while ($line = mysql_fetch_array($dbrisultato, MYSQL_NUM))
{
print "\t<tr>\n";
	foreach ($line as $col_value)
	{
	print "\t<td>$col_value</td>\n";
	}
print "\t</tr>\n";
}
print "</table>\n";
che dici ?

Perdonami forse sono un pò tardo a capire, ma che significa ?
Non ti preoccupare, il commento non era per te ma per quella pagina
del wiki che non avevo mai letto :-)
Ti aiuterei ma non conosco né MySql né php