Mysql
 sql >> Database >  >> RDS >> Mysql

Echo più valori con lo stesso nome di colonna nella stessa tabella

Suggerimento per professionisti:Mai usa SELECT * nel software a meno che tu non sappia esattamente perché lo stai facendo. Nel tuo caso è dannoso.

Presumo che la tua domanda sia davvero contro l'user e trade tabelle che hai menzionato nella tua domanda.

Innanzitutto, riformula la query utilizzando l'SQL del 21° secolo, come segue:

SELECT * 
  FROM trade AS t
  JOIN user AS s ON  s.user_id = t.user_id_sender
 WHERE s.facebook_id = $fbid 

In secondo luogo, utilizzalo per recuperare i nomi dei tuoi utenti e l'ID oggetto scambiato.

SELECT s.user_name AS sender,
       r.user_name AS receiver,
       t.trade_id AS item_id
  FROM trade AS t
  JOIN user AS s ON  s.user_id = t.user_id_sender
  JOIN user AS r ON  r.user_id = t.user_id_receiver
 WHERE s.facebook_id = $fbid 

Guarda come JOIN il user tabella due volte, con due diversi alias s (per mittente) e r (per ricevitore)? Questo è il trucco per recuperare entrambi i nomi dagli ID.

Guarda come utilizziamo gli alias sender e receiver per disambiguare i due user_name colonne nel set di risultati?

Ora, quando usi il php fetch_array funzione, ti ritroverai con questi elementi nell'array.

$history['sender']
$history['receiver']
$history['item_id']

Le stringhe di indice dell'array corrispondono ai nomi alias che hai specificato nel tuo SELECT clausola nella tua query.

Quindi, un motivo per evitare SELECT * è che puoi ottenere più di una colonna con lo stesso nome, e questo significa fetch_array eliminerà quei duplicati e quindi perderà informazioni utili dal tuo set di risultati.