Newsgroup: it.comp.www.php
Titolo: Ricavare dati da + tabelle

Domandina veloce: faccio una query con molte tabelle joinate.
Faccio la fetch, e cerco di tirare fuori i dati.
DOMANDA
Come faccio se + tabelle hanno campi con lo stesso nome?
Per es, se è una select a.campo, b.campo where tabella1 a, tabella2 b ecc
ecc, come faccio a prendere un campo piuttosto dell'altro?
$row['a.campo'] non va
$row['tabella1.campo'] neanche
help :D

 $row['tabella1.campo'] neanche
La query la scriverei così...
        SELECT a.campo AS acampo, b.campo AS bcampo FROM a,b WHERE ...
... successivamente accederei ai campi così ...
        $row['acampo'];
        $row['bcampo'];
Ciao.
-- 
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.

         $row['bcampo'];
Grazissimo, mi sono perso anche l' AS :D
Imparoimparoimparoimparo (cit)

         SELECT a.campo AS acampo, b.campo AS bcampo FROM a,b WHERE ...
Approfitto anche della tua disponibilità oltre a quella di dario :D
Ho una tabella, diciamo di 2 campi (id e dato) in cui per es ci sono molte
righe con = id e dato diverso.
Visto che devo lavorare sul valore "dato" ora come ora sono costretto a fare
una query sul valore id e poi mentre con la fetch estraggo risultati faccio
query col valore "dato"
Questo tipo di query non è unibile vero? sto rivedendo tutti i files per
diminuire al massimo le query e joinare il joinabile, ma queste davvero non
so come semplificarle....
idee?

 faccio query col valore "dato"
Se non ci dici come è fatta l'altra tabella sarà dura... :-)
Cmq, supponiamo che l'altra tabella sia fatta così:
         B
    +----+----+
    |dato|test|
    +----+----+
    |aaaa|1000|
    |cccc|2000|
    |cccc|4000|
    |dddd|1500|
    |dddd|1300|
    +----+----+
Se fai una select come segue:
        SELECT id,a.dato as adato, bb.dato as bdato,test FROM A,B 
                where id=1 and adato=bdato
dovresti ottenere qualcosa come questo
    +----+----+----+
    | id |dato|test|
    +----+----+----+
    | 1  |aaaa|1000|
    | 1  |cccc|2000|
    | 1  |cccc|4000|
    | 1  |dddd|1500|
    | 1  |dddd|1300|
    +----+----+----+
A questo punto usi il campo che ti serve.
Spero funzioni. :)


                 where id=1 and adato=bdato
Ahem...
        SELECT id,A.dato as adato, B.dato as bdato,test FROM A,B
                where id=1 and adato=bdato


 Se non ci dici come è fatta l'altra tabella sarà dura... :-)
Allora visto che provochi adesso ti sommergo di php eheheh :D
// questa è la query principale da cui tiro fuori le news da inserire nelle
varie pagine usando la "limit" con inizio e offset
  $data_query = 'select SQL_CALC_FOUND_ROWS * from news_table';
  if($cat_id) $data_query .= ' where news_to_category = '.$cat_id;
  if($arg_id) $data_query .= ' and news_to_argument = '.$arg_id;
  $data_query .=' order by news_date DESC limit '.$begin.','.$offset;
  $data_table_query_result = sta_db_query($data_query);
//conto le righe del risultato, ma questa query non è evitabile?
  $count_query=sta_db_query('select found_rows()');
  $count_result=sta_db_fetch_array($count_query);
  $count=$count_result['found_rows()'];
  if($count>0){
//calcolo il numero delle pagine
non è interessante per il nostro problema :D
  while($row=sta_db_fetch_array($data_table_query_result)){
  //trovo nomi
  $name_query = "select c.category_name, c.category_image, ar.argument_name,
ar.argument_image, a.authors_name from categories_table c, arguments_table
ar, authors_table a where c.category_id = ".$row['news_to_category']." and
ar.argument_id = ".$row['news_to_argument']." and a.authors_id =
".$row['news_author'];
  $name_result = sta_db_query($name_query);
  $name_done = sta_db_fetch_array($name_result);
  $cat_name = $name_done['category_name'];
  $arg_name = $name_done['argument_name'];
  $aut_name = $name_done['authors_name'];
Come vedi quest'ultima query tira fuori nome della categoria, dell'argomento
e dell'autore per ogni news estratta dalla prima query.
Mi piacerebbe poterla evitare, ma non saprei come......