2017-12-25 113 views
5

Tôi đang cố gắng tham gia 2 bảng mà tôi cần chỉ hiển thị 3 cột từ cột thứ hai trong đó cột khác được sử dụng làm so sánh.Tham gia các bảng trong MySQL và yêu cầu dữ liệu từ bảng thứ hai chỉ

Ví dụ:

Bảng một được gọi là nhân viên: nó có một cột gọi là user_id và một số cột khác

Bảng hai được gọi là người: nó có một cột gọi là user_id trong đó bao gồm một số các user_ids nhân viên

Các cột tôi muốn chọn là tất cả từ bảng người! (Firstname, lastname, email)

Tôi đã thử các sau nhưng một cái gì đó đi sai:

SELECT userid, firstname, lastname, email 
FROM people 
JOIN employee 
WHERE people.userid = employee.userid; 

Tôi không chắc chắn những gì tôi làm sai, bạn có thể vui lòng giúp tôi sửa chữa nó?

Trả lời

5

Bạn có thể thử truy vấn này:

SELECT 
    p.userid, 
    p.firstname, 
    p.lastname, 
    p.email 
FROM 
    people as p, 
    employee as emp 
WHERE 
    p.userid = emp.userid 
+0

Điều này cảm thấy như một bước lùi :-( – Strawberry

+0

Tại sao bạn nghĩ rằng đó là một bước trở lại dâu? Nó có vẻ tốt cho tôi? –

+0

Tôi nghĩ rằng vì nó sẽ hoàn toàn quay lại cú pháp kết nối cũ thay vì sử dụng JOIN ... ON ... – Turo

2

Nhìn vào kịch bản của bạn, có vẻ như bạn sẽ chạy vào cột nhập nhằng trong ít nhất userid của bạn. Bạn muốn nói rõ ràng cho SQL nơi cột đến từ như trong mệnh đề WHERE của bạn nếu có các cột chia sẻ cùng tên giữa hai bảng. giải pháp

SELECT 
    userid, -- AMBIGUOUS 
    firstname, 
    lastname, 
    email 
    FROM people 
    JOIN employee 
    WHERE people.userid = employee.userid; 

Ví dụ:

SELECT 
    people.userid, 
    people.firstname, 
    people.lastname, 
    people.email 
    FROM people 
    JOIN employee 
    WHERE people.userid = employee.userid; 
2

Đối với vấn đề này, bạn có thể sử dụng truy vấn này

hãy giả sử rằng tôi có một bảng người dùng mà người dùng có số không đến một hồ sơ hình ảnh

Tôi cần người dùng (Tên, Họ, Ngày sinh) cho những người dùng không có ảnh hồ sơ Tôi có thể sử dụng truy vấn này

select * 
from user c 
where NOT EXISTS (
    select 1 
    from photo p 
    where p.id = c.photo_id 
) 

trong này, nơi bạn có thể sử dụng bất kỳ lĩnh vực giữa hai bảng này

loại bỏ sẽ không cho kết quả trên người dùng có một hồ sơ hình ảnh

hy vọng điều này giúp bạn

bạn có thể tìm kiếm cho SEMI JOINANTI JOIN để biết thêm thông tin

+0

trong trường hợp này, người dùng là bảng mong muốn của bạn chứa những gì bạn cần hiển thị –

0

tôi nghĩ rằng truy vấn này sẽ giải quyết vấn đề của bạn

insert into table1 (clmn_1,clmn_2,clmn_3) SELECT clmn_1,clmn_2,clmn_3 FROM table2 where id = value 
Các vấn đề liên quan