Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Echo wielu wartości o tej samej nazwie kolumny w tej samej tabeli

Wskazówka dla profesjonalistów:Nigdy użyj SELECT * w oprogramowaniu, chyba że wiesz dokładnie, dlaczego to robisz. W twoim przypadku jest to szkodliwe.

Zakładam, że Twoje zapytanie jest naprawdę skierowane przeciwko user i trade tabele, o których wspomniałeś w swoim pytaniu.

Najpierw przekształć zapytanie, używając SQL XXI wieku, w następujący sposób:

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

Po drugie, użyj tego, aby pobrać nazwy użytkownika i identyfikator przedmiotu, którym handlowałeś.

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 

Zobacz, jak JOIN user tabela dwukrotnie, z dwoma różnymi aliasami s (dla nadawcy) i r (dla odbiorcy)? To sztuczka, aby pobrać obie nazwy z identyfikatorów.

Zobacz, jak używamy aliasów sender i receiver aby odróżnić dwa user_name kolumny w zestawie wyników?

Teraz, gdy używasz php fetch_array funkcji, otrzymasz te elementy w tablicy.

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

Ciągi indeksu tablicy odpowiadają aliasom określonym w SELECT klauzuli w zapytaniu.

Dlatego jednym z powodów, aby unikać SELECT * jest to, że możesz uzyskać więcej niż jedną kolumnę o tej samej nazwie, co oznacza fetch_array wyeliminuje te duplikaty, a tym samym utraci przydatne informacje z zestawu wyników.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można załadować żądanej klasy:com.mysql.jdbc.Driver na JBoss przy użyciu Hibernate

  2. SQLSTATE[22007]:Nieprawidłowy format daty i godziny:1292 Niepoprawna wartość daty i godziny:„2008-03-30 02:56:12”

  3. Ruby - Wystąpił wyjątek:[Mysql2::Error] zamknięte połączenie MySQL

  4. sql ciągnięcie wiersza dla następnego lub poprzedniego wiersza bieżącego wiersza

  5. Kiedy należy odbudować indeksy bazy danych?