sql >> Databáze >  >> RDS >> Mysql

Echo více hodnot se stejným názvem sloupce ve stejné tabulce

Tip pro profesionály:Nikdy použijte SELECT * v softwaru, pokud přesně nevíte, proč to děláte. Ve vašem případě je to škodlivé.

Předpokládám, že váš dotaz je skutečně proti user a trade tabulky, které jste zmínil ve své otázce.

Nejprve přeformulujte svůj dotaz pomocí SQL 21. století následovně:

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

Za druhé, použijte toto k načtení vašich uživatelských jmen a ID obchodované položky.

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 

Podívejte se, jak se JOIN user tabulka dvakrát, se dvěma různými aliasy s (pro odesílatele) a r (pro přijímač)? To je trik, jak z ID získat obě jména.

Podívejte se, jak používáme aliasy sender a receiver k odlišení dvou user_name sloupců v sadě výsledků?

Nyní, když použijete php fetch_array skončíte s těmito prvky v poli.

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

Řetězce indexu pole odpovídají názvům aliasů, které jste zadali v SELECT klauzule ve vašem dotazu.

Takže jeden důvod, proč se vyhnout SELECT * je, že můžete získat více než jeden sloupec se stejným názvem, a to znamená fetch_array odstraní tyto duplikáty, a tak ztratí užitečné informace z vaší sady výsledků.




  1. Importujte data ze souboru Microsoft SQL (.MDF) do MySQL

  2. Je možné vynutit zamykání na úrovni řádků v SQL Server?

  3. Získávání dat z více tabulek do jednoho řádku při zřetězení některých hodnot

  4. stále se zobrazuje chyba syntaxe (php / mysql)