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.
sincos viết 15:38 ngày 10/10/2018
Trong trường hợp này thằng sql không sai. Không tin paste vào php myadmin coi.

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.
chiengminh viết 15:33 ngày 10/10/2018
Bảng Cakhuc và Nhacsy có mối quan hệ nhiều-nhiều nên mình nghĩ bạn nên làm thêm một bảng là CakhucNhacsy gồm:

-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
Adam viết 15:28 ngày 10/10/2018
Được gửi bởi chiengminh
Bảng Cakhuc và Nhacsy có mối quan hệ nhiều-nhiều nên mình nghĩ bạn nên làm thêm một bảng là CakhucNhacsy gồm:

-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
Kịch liệt ủng hộ.
sincos viết 15:41 ngày 10/10/2018
Được gửi bởi chiengminh
Bảng Cakhuc và Nhacsy có mối quan hệ nhiều-nhiều nên mình nghĩ bạn nên làm thêm một bảng là CakhucNhacsy gồm:

-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
Được gửi bởi Adam
Kịch liệt ủng hộ.
Vãi..... cả quan hệ nhiều nhiều.

1 bài hát được sáng tác bởi nhiều nhạc sĩ à.
imchicken viết 15:35 ngày 10/10/2018
Được gửi bởi sincos
Trong trường hợp này thằng sql không sai. Không tin paste vào php myadmin coi.

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.
Database mình làm đó bác. Ngu nên ko bik mới lên này hỏi chứ, giỏi thì đâu cần phải hỏi mấy bác.

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.
luuanhquyen viết 15:31 ngày 10/10/2018
thì ngu mới phải học chứ giỏi học làm giè, thằng nào chả ngu, hoặc ít hoặc nhiều, ko ngu cái này thì ngu cái khác thôi.
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...
Adam viết 15:38 ngày 10/10/2018
Được gửi bởi sincos
Vãi..... cả quan hệ nhiều nhiều.

1 bài hát được sáng tác bởi nhiều nhạc sĩ à.
Một bài hát được sáng tác bởi hơn 1 nhạc sỹ ko phải là ko có. Bác ko biết gì về nhạc nhẽo thì đừng tỏ ra nguy hiểm.
kimthangatm viết 15:35 ngày 10/10/2018
Tên giống nhau thì đc..nội dung cũng giống nhau thì 1 bài. Các bác đừng nóng, làm mất t/c người hỏi lẫn người trả lời!
sincos viết 15:27 ngày 10/10/2018
Được gửi bởi Adam
Một bài hát được sáng tác bởi hơn 1 nhạc sỹ ko phải là ko có. Bác ko biết gì về nhạc nhẽo thì đừng tỏ ra nguy hiểm.
Có những bài hát mà lời của 1 người và nhạc của 1 người khác. Tuy nhiên khi thiết kế thường người ta lấy tên của 2 người đó (hoặc tên chung của nhóm đó) và coi như 1 nhạc sĩ.

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.
Bài liên quan
0