Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Gema beberapa nilai dengan nama kolom yang sama di tabel yang sama

Kiat pro:Tidak pernah gunakan SELECT * dalam perangkat lunak kecuali Anda tahu persis mengapa Anda melakukannya. Dalam kasus Anda, ini berbahaya.

Saya berasumsi permintaan Anda benar-benar bertentangan dengan user dan trade tabel yang Anda sebutkan dalam pertanyaan Anda.

Pertama, susun ulang kueri Anda menggunakan SQL abad ke-21, sebagai berikut:

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

Kedua, gunakan ini untuk mengambil nama pengguna Anda dan id item yang diperdagangkan.

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 

Lihat bagaimana kami JOIN user tabel dua kali, dengan dua alias berbeda s (untuk pengirim) dan r (untuk penerima)? Itulah trik untuk mengambil kedua nama dari ID.

Lihat bagaimana kami menggunakan alias sender dan receiver untuk membedakan kedua user_name kolom di kumpulan hasil?

Sekarang, ketika Anda menggunakan php fetch_array fungsi, Anda akan berakhir dengan elemen-elemen ini dalam array.

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

String indeks array sesuai dengan nama alias yang Anda tentukan di SELECT klausa dalam kueri Anda.

Jadi, salah satu alasan untuk menghindari SELECT * adalah Anda bisa mendapatkan lebih dari satu kolom dengan nama yang sama, dan itu berarti fetch_array akan menghilangkan duplikat tersebut sehingga akan kehilangan informasi yang berguna dari kumpulan hasil Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gulir Tak Terbatas Memuat Semua Item Sekaligus?

  2. PHP/mysql:Beri peringkat pengguna berdasarkan klik

  3. Cara mengoptimalkan tabel MySQL/MariaDB

  4. Mengurai file xml dan menyimpannya ke dalam database

  5. Simpan data offline sebelum posting