Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo ra nhiều giá trị có cùng tên cột trong cùng một bảng

Mẹo chuyên nghiệp: Không bao giờ sử dụng SELECT * trong phần mềm trừ khi bạn biết chính xác tại sao bạn lại làm như vậy. Trong trường hợp của bạn, nó có hại.

Tôi giả định rằng truy vấn của bạn thực sự chống lại người dùng usertrade bảng bạn đã đề cập trong câu hỏi của mình.

Trước tiên, hãy viết lại truy vấn của bạn bằng cách sử dụng SQL thế kỷ 21, như sau:

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

Thứ hai, sử dụng điều này để truy xuất tên người dùng của bạn và id mặt hàng đã giao dịch.

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 

Xem cách chúng tôi JOIN người dùng user bảng hai lần, với hai bí danh khác nhau s (dành cho người gửi) và r (cho người nhận)? Đó là mẹo để tìm nạp cả hai tên từ ID.

Xem cách chúng tôi sử dụng bí danh sender và bộ thu user để phân biệt hai user_name các cột trong tập kết quả?

Bây giờ, khi bạn sử dụng php fetch_array , bạn sẽ kết thúc với các phần tử này trong mảng.

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

Chuỗi chỉ mục mảng tương ứng với tên bí danh bạn đã chỉ định trong SELECT của mình mệnh đề trong truy vấn của bạn.

Vì vậy, một lý do để tránh SELECT * là bạn có thể nhận được nhiều hơn một cột có cùng tên và điều đó có nghĩa là fetch_array sẽ loại bỏ các bản sao đó và do đó, nó sẽ làm mất thông tin hữu ích từ tập hợp kết quả của bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xem tên người dùng đã tồn tại trong cơ sở dữ liệu MySQL PHP chưa

  2. MySQL LAST_INSERT_ID () được sử dụng với nhiều bản ghi câu lệnh INSERT

  3. cách khôi phục cơ sở dữ liệu trong phpmyadmin sau khi gỡ cài đặt xampp

  4. Ngày MySQL Thay đổi thành Ngày hôm qua Sau khi Lưu JPA

  5. Tham gia bảng GeoIP với bảng IP trong MySQL