Ciao a tutti! mi consigliate qual'è la stringa SQL per ricavare i nomi delle colonne di una tabella che però è stata generata da una JOIN?
grazie![]()
Ciao a tutti! mi consigliate qual'è la stringa SQL per ricavare i nomi delle colonne di una tabella che però è stata generata da una JOIN?
grazie![]()
Basta qualificare i nomi delle colonne coi relativi nomi di tabella.
Io uso questo metodo:
Se, come nell'esempio hai 2 nomi di colonna uguali (tab1.id e tab2.id) basta dare un alias ad uno dei dueCodice PHP:
$Query = "SELECT tab1.id,
tab1.giorno,
tab1.mese,
tab1.anno,
tab1.cognome,
tab1.nome,
tab2.id AS altro_id,
tab2.data_conferma,
tab2.costo_corsa
From tab1
INNER JOIN tab2
ON tab1.id = tab2.id_altro"
dimenticavo una cosa
nella ON tab1.id = tab2.id_altro si suppone che id_altro è il campo di collegamente tra le 2 tabelle
ma questo presuppone che io conosca i nomi delle colonne... io invece devo creare una select che mi dia i nomi delle colonne, non le righe della tabella![]()
Non capisco bene.
Se non conosci i nomi delle colonne, non li conoscerai nemmeno con una interrogazione al DB, a meno che non decida di stamparli e vederli a scermo per poi usarli.
Per far questo io uso questo (ovviamente per ogni tabella che mi interessa).
Però mettere gli elementi di questo array in modo giudizioso in una query che coinvolge più di una tabella è un po' complesso anche perchè potrebbero esserci nomi di campi uguali inammissibili.Codice PHP:
$link = mysql_connect($Host, $User, $Password)
mysql_select_db($DBName, $link)
$campi = mysql_list_fields($DBName, $table, $link);
$colonne = mysql_num_fields($campi);
$fields = array();
for ($i = 0; $i < $colonne; $i++) {
$fields[] = mysql_field_name($campi, $i);
}
for ($i = 0; $i < count($fields); $i++) {
echo $fields[$i]) . "
\n";
}
Quindi, di solito, quando mi capita di non conoscere i nomi dei campi faccio il lavoro qui sopra, mi copio i nomi e poi li uso nella query nel modo che ho detto prima.
Vedi se questo può aiutarti.
si può aiutarmisperavo ci fosse un metodo più automatico, da una select prelevare i vari nomi.. ma si può comunque venire a capo
grazie