10/10/2018, 13:26
PHP & MySQL như thế này tính sao
Mình có 2 table
1 ca khuc
-id
-tencakhuc
-nhacsi
1 bản nữa là nhacsi
-id
-tennhacsi
-quocgia
khi mình select thông tin của tất cả ca khúc bao gồm nhạc sĩ tương ứng ra thì mình viết
SELECT * FROM cakhuc ck, nhacsi ns WHERE ns.id = ck.nhacsi
PRINT_R thì ra kết quả khá là tào lao vậy mấy bác.
nó ko phân biệt được ck.id và ns.id nhỉ. mà nó chung 1 trường là id và giá trị là id của nhacsi
còn id của cakhuc biến mất tiêu.
1 ca khuc
-id
-tencakhuc
-nhacsi
1 bản nữa là nhacsi
-id
-tennhacsi
-quocgia
khi mình select thông tin của tất cả ca khúc bao gồm nhạc sĩ tương ứng ra thì mình viết
SELECT * FROM cakhuc ck, nhacsi ns WHERE ns.id = ck.nhacsi
PRINT_R thì ra kết quả khá là tào lao vậy mấy bác.
nó ko phân biệt được ck.id và ns.id nhỉ. mà nó chung 1 trường là id và giá trị là id của nhacsi
còn id của cakhuc biến mất tiêu.
Bài liên quan
Tuy nhiên dùng php khi kết quả trả về có 2 cột giống nhau dẫn đến nó đè lên giá trị của nhau.
Vậy viết như sau là hết
SELECT ck.*, ns.id AS ns_id, ns.tennhacsi, ns.quocgia FROM cakhuc ck, nhacsi ns WHERE ns.id = ck.nhacsi
Database thằng nào thiết kế ngu vậy. 2 bảng có relationship với nhau mà key lại có tên giống nhau.
-id
-cakhuc_id
-nhacsi_id
chứa id của nhạc sỹ tương ứng với id ca khúc. Cần tìm thì join lại
1 bài hát được sáng tác bởi nhiều nhạc sĩ à.
Cảm ơn bác trả lời nhiều. Do trước kia học không để ý đến vấn đề này nên bây giờ mới đụng vào, nên hỏi thôi. Mấy bác thông cảm ah.
Tên cột không nên để giống nhau. Có thể thêm prefix vào trước. Ví dụ bản user thì có thể đặt tên trường là u_name, u_number...
Không ai tách riêng ra đâu.
Chắc chỉ có bác này pro mới tách ra thôi.