sql >> Databasteknik >  >> RDS >> Mysql

Eka flera värden med samma kolumnnamn i samma tabell

Proffstips:Aldrig använd SELECT * i programvara om du inte vet exakt varför du gör det. I ditt fall är det skadligt.

Jag antar att din fråga verkligen är emot user och trade tabeller du nämnde i din fråga.

Omarbeta först din fråga med SQL från 2000-talet, enligt följande:

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

För det andra, använd detta för att hämta dina användarnamn och artikel-id:t.

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 hur vi JOIN user tabell två gånger, med två olika alias s (för avsändare) och r (för mottagare)? Det är tricket att hämta båda namnen från ID:n.

Se hur vi använder aliasen sender och receiver för att disambiguera de två user_name kolumner i resultatuppsättningen?

Nu, när du använder php fetch_array funktion, kommer du att sluta med dessa element i arrayen.

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

Arrayindexsträngarna motsvarar aliasnamnen du angav i din SELECT klausul i din fråga.

Så, en anledning att undvika SELECT * är att du kan få mer än en kolumn med samma namn, och det betyder fetch_array kommer att eliminera dessa dubbletter och så kommer den att förlora användbar information från din resultatuppsättning.




  1. Konvertera fråga från MySql till Sqlite

  2. Hur man undkommer värde nyckelord i mysql medan du använder Select-satsen

  3. mysql-frågan returnerar ibland ingenting

  4. Hur går man med i kategoritabell för föräldrar i SQL-fråga?