2013-02-10 35 views
12

Tôi đang cố gắng lấy một số hàng từ cùng một bảng. Đó là bảng người dùng: người dùng có user_iduser_parent_id.ĐỐI TÁC THAM GIA cùng một bảng

Tôi cần nhận hàng user_id và hàng user_parent_id. Tôi đã mã hóa một cái gì đó như thế này:

SELECT user.user_fname, user.user_lname 
FROM users as user 
INNER JOIN users AS parent 
ON parent.user_parent_id = user.user_id 
WHERE user.user_id = $_GET[id] 

Nhưng nó không hiển thị kết quả. Tôi muốn hiển thị hồ sơ người dùng và hồ sơ gốc của nó.

Trả lời

24

Tôi nghĩ rằng vấn đề là trong điều kiện JOIN của bạn.

SELECT user.user_fname, 
     user.user_lname, 
     parent.user_fname, 
     parent.user_lname 
FROM users AS user 
JOIN users AS parent 
    ON parent.user_id = user.user_parent_id 
WHERE user.user_id = $_GET[id] 

Sửa: Bạn có lẽ nên sử dụng LEFT JOIN nếu có người dùng không có cha mẹ.

+0

Cảm ơn tất cả mọi người cho đầu vào của bạn .. Tôi thực sự didnt đã ID mẹ đặt trong khi thử nghiệm, bây giờ làm việc của nó .. một nhiều thứ hơn có thể giúp ai đó, tôi đã tiết kiệm user_parents dưới dạng TEXT ở định dạng "1,2", vì vậy nó có nghĩa là chi tiết của 2 người dùng .. vậy trong kịch bản này, truy vấn cuối cùng của tôi là dưới đây: $ query = " chọn user.user_fname, user.user_lname, parent.user_lname AS plname, parent.user_fname AS pfname từ người dùng {$ prefix} làm người dùng tham gia {$ prefix} người dùng làm cha mẹ trên parent.user_id IN (user.user_parents) nơi user.user_id = ". $ Id; cảm ơn tất cả một lần nữa .. – user1718343

+1

@ user1718343 Không bao giờ bao giờ ** EVER ** lưu trữ dữ liệu phân tách như vậy trong cột. –

1

Có lẽ đây sẽ là lựa chọn (nếu tôi hiểu câu hỏi một cách chính xác)

select user.user_fname, user.user_lname, parent.user_fname, parent.user_lname 
... As before 
1

truy vấn của bạn nên làm việc tốt, nhưng bạn phải sử dụng bí danh parent để hiển thị các giá trị của bảng cha như thế này:

select 
    CONCAT(user.user_fname, ' ', user.user_lname) AS 'User Name', 
    CONCAT(parent.user_fname, ' ', parent.user_lname) AS 'Parent Name' 
from users as user 
inner join users as parent on parent.user_parent_id = user.user_id 
where user.user_id = $_GET[id]; 
1

Bạn cũng có thể sử dụng UNION như

SELECT user_fname , 
     user_lname 
FROM users 
WHERE user_id = $_GET[id] 
UNION 
SELECT user_fname , 
     user_lname 
FROM users 
WHERE user_parent_id = $_GET[id] 
0

Tôi không biết làm thế nào bàn được tạo ra nhưng cố gắng này ...

SELECT users1.user_id, users2.user_parent_id 
FROM users AS users1 
INNER JOIN users AS users2 
ON users1.id = users2.id 
WHERE users1.user_id = users2.user_parent_id 
Các vấn đề liên quan