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

Ekko flere værdier med samme kolonnenavn i samme tabel

Professionelt tip:Aldrig brug SELECT * i software, medmindre du ved præcis, hvorfor du gør det. I dit tilfælde er det skadeligt.

Jeg går ud fra, at din forespørgsel virkelig er imod user og trade tabeller, du nævnte i dit spørgsmål.

Først skal du omforme din forespørgsel ved hjælp af SQL fra det 21. århundrede, som følger:

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

For det andet skal du bruge dette til at hente dine brugernavne og det handlede vare-id.

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 

Se, hvordan vi JOIN user tabel to gange med to forskellige aliaser s (for afsender) og r (til modtager)? Det er tricket til at hente begge navne fra ID'er.

Se, hvordan vi bruger aliasserne sender og receiver for at disambiguere de to user_name kolonner i resultatsættet?

Nu, når du bruger php fetch_array funktion, ender du med disse elementer i arrayet.

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

Array-indeksstrengene svarer til de aliasnavne, du har angivet i din SELECT klausul i din forespørgsel.

Så en grund til at undgå SELECT * er, at du kan få mere end én kolonne med samme navn, og det betyder fetch_array vil fjerne disse dubletter, og så vil den miste nyttig information fra dit resultatsæt.




  1. Den nemmeste måde at lave en rekursiv selv-join på?

  2. Hvordan kan jeg importere en JSON-fil til MySQL-databasen ved hjælp af en simpel forespørgsel, uden faktisk at konvertere den til andre filformater som CSV osv.?

  3. Hvordan kan jeg få MySQL til at skrive outfiler som en anden bruger?

  4. Forskellen mellem VARCHAR og TEXT i MySQL