Incrociare due tabelle con una query MySQL: HELP!!

Ciao a tutti.

Ho un piccolo problema.

Ho necessità di estrarre e incrociare i dati da due tabelle contemporaneamente mettendoli in relazione e facendo in modo che nell'output compaia stampata una tabella in html con tutti i valori di entrambe anche se la seconda tabella ha un numero di record inferiore alla prima.

Mi spiego meglio.

Ho una tabella A con i seguenti campi: Data_ora, Chiamate_Entrate, Chiamate_Risposte e la tabella B con  i campi Data_Ora (il campo tramite il quale effettuare l'incrocio tra le due tabelle) e il campo Talk_Time, però il numero dei record contenuti nella tabella A è in ipotesi di 100 e nella tabella B di 70. Io vorrei effettuare una query mettendo in relazione le due tabelle A e B tramite il campo Data_Ora ma in modo da generare un output che non preveda solo 70 righe ma 100 in modo da far stampare comunque le 30 righe che la tabella B in realtà non ha.

L'output dovrebbe essere tipo:

Data_Ora     Chiamate_Entrate     Chiamate_Risposte           Talk_Time

20/03/06                15                                7                                 325

21/03/06                18                                9                                 421

22/03/06                21                               12                                605

23/03/06                23                                8                                 353

24/03/06                                                         

25/03/06                                                     

26/03/06                16                                 7                                 322

27/03/06                                                       

28/03/06                14                                 9                                 401

Quindi le date 24/03, 25/03 e 27/03 (per le quali nella tabella B neppure esistono i record corrispondenti mentre nella tabella A ci sono anche se valorizzate in realtà a 0 o null)) dovrebbero essere comunque stampate.

Ho provato a fare una subquery (che però tramite PHP viene lanciata su un db Sybase e non MySQL) ma senza ottere nulla, ho provato con un INNER JOIN ma nulla, non riesco proprio a identificare l'errore.

Allora ho provato prima a lanciare una banale query di selezione sulla tabella A, ho parcheggiato i suoi dati in un array

while ($valori = mysql_fetch_array ($query)){ 
$a1 = $valori ["Data_Ora"];
$a2 = $valori ["Chiamate_Entrate"];
$a3 = $valori ["Chiamate_Risposte"];
}

e  poi ho lanciato un'altra query sulla tabella B dicendogli WHERE Data_Ora >= $a1 cioè vai a prendere in questa tabella B tutti i record corrispondenti al campo Data_Ora e contenuti nell'array $a1 (riferito alla tabella A).

Le query così messe funzionano ma a video mi viene stampato solo un solo  :( record, il primo esistente e nella tb A e nella tb B.

Qualcuno sa come posso risolvere?

Un grazie a tutti!

Ciao!

Stone  :bye:

inviato 10 anni fa
stone
X 0 X

Devi usare una LEFT JOIN tra la tabella con più record e la tabella con meno record

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda