10/10/2018, 10:06

Select qua 1 bảng trung gian trong mysql

đã chỉnh sửa:
=================
Tình hình như sau:
Mình có 3 bảng:
+ baihat(baihat_id,baihat_ten,baihat_url)
+ baihat_casi(baihat_id,casi_id)
+ casi(casi_id,casi_ten,casi_tieusu)

mình muốn lấy thông tin của bài hát,và ca sĩ

SELECT baihat.baihat_id, baihat.baihat_ten,baihat.baihat_url,casi.casi_ten

FROM baihat, casi, baihat_casi

where baihat.baihat_id = baihat_casi.baihat_id
and baihat_casi.casi_id = casi.casi_id

nhưng nó lại không lấy được dòng nào hết

Mình chỉ mới học PHP thôi.Hixhix

Cảm ơn mọi người trước!!!!
khuongCOMPUTER viết 12:17 ngày 10/10/2018
FROM baihat, casi
Table baihat_casi đâu mà xài?
ngoc_viet08 viết 12:11 ngày 10/10/2018
sao có 2 bảng cùng tên nhỉ ? bồ làm csdl lằng nhằng kinh
table 1 : bai_hat
id , ten , url , ca_si

table 2 : ca_si
id , ten , tieu_su

roài xong csdl.

roài tính đến việc select ra lại .
như ý bồ là lấy thông tin bài hát và thông tin ca sĩ thực hiện bài hát đó. tất nhiên đầu tiên phải biết id của bài hát là $id

select ten,url,ca_si from bai_hat where id = $id

trả dữ liệu về , lọc lấy dữ liệu ca_si ( id của ca sĩ thực hiện bài hát ấy ) là $ca_si_id

select ten , tieu_su from ca_si where id=$ca_si_id
nqthanh95 viết 12:17 ngày 10/10/2018
Được gửi bởi ngoc_viet08
sao có 2 bảng cùng tên nhỉ ? bồ làm csdl lằng nhằng kinh
table 1 : bai_hat
id , ten , url , ca_si

table 2 : ca_si
id , ten , tieu_su

roài xong csdl.

roài tính đến việc select ra lại .
như ý bồ là lấy thông tin bài hát và thông tin ca sĩ thực hiện bài hát đó. tất nhiên đầu tiên phải biết id của bài hát là $id

select ten,url,ca_si from bai_hat where id = $id

trả dữ liệu về , lọc lấy dữ liệu ca_si ( id của ca sĩ thực hiện bài hát ấy ) là $ca_si_id

select ten , tieu_su from ca_si where id=$ca_si_id

Giữa table BaiHat và Casi là quan hệ nhiều - nhiều mà
ngoc_viet08 viết 12:13 ngày 10/10/2018
1 bài hát được hát bởi nhiều ca sĩ hả ??? . nếu vậy thường nó là 1 id riêng , vì ca sĩ khác hát thì file khác . cuối cùng chỉ là quan hệ 1 nhiều.
nqthanh95 viết 12:15 ngày 10/10/2018
Được gửi bởi ngoc_viet08
1 bài hát được hát bởi nhiều ca sĩ hả ??? . nếu vậy thường nó là 1 id riêng , vì ca sĩ khác hát thì file khác . cuối cùng chỉ là quan hệ 1 nhiều.
Uhm cảm ơn bạn nhiều nha!!!!
thuyduongcd viết 12:20 ngày 10/10/2018
Được gửi bởi ngoc_viet08
1 bài hát được hát bởi nhiều ca sĩ hả ??? . nếu vậy thường nó là 1 id riêng , vì ca sĩ khác hát thì file khác . cuối cùng chỉ là quan hệ 1 nhiều.
Thế nếu bài đó do Dan Trường và Cẩm Ly song ca thì thế nào

@nqthanh95: Không ai tổ chức DB kỳ vậy, chỉ có 1 cột mà tách ra thành 1 table riêng. Nên bỏ hẳn cái tab baihat_casi mà chèn cái cột casi_id vào tab bài hát luôn sẽ hợp lý hơn
ngoc_viet08 viết 12:19 ngày 10/10/2018
thì ca sĩ sẽ có trường tên đan trường - cẩm ly
Noname viết 12:20 ngày 10/10/2018
quan hệ nhiều nhiều: Một bài hát được trình bày bởi nhiều ca sĩ. Nhiều ca sĩ của thể hát chung một bài.

Table baihat_casi có bao nhiêu dòng ?
baihat_casi join với baihat có bao nhiêu dòng ?
baihat_casi join với casi có bao nhiêu dòng ?

Vấn đề ở dữ liệu
hocvahanh viết 12:17 ngày 10/10/2018
Được gửi bởi nqthanh95
đã chỉnh sửa:
=================
Tình hình như sau:
Mình có 3 bảng:
+ baihat(baihat_id,baihat_ten,baihat_url) baihat_id khóa chính nhé

+ baihat_casi(baihat_id,casi_id) casi_id làm khóa chính

+ casi(casi_id,casi_ten,casi_tieusu) tại đây chưa thấy bạn có cái nào để làm khóa chính ( nhưng không cần cũng được) Note : nếu table này bạn lấy casi_id thì không được đâu nhé

mình muốn lấy thông tin của bài hát,và ca sĩ
Không biết bạn sử dụng quan hệ giữa các bảng như thế nào, nếu không lầm bạn thử thể này nhé

Table : baihat (baihat_id) 1 -> nhiều với Table baihat_casi(baihat_id)
Table : baihat_casi(casi_id) 1 -> nhiều với Table casi(casi_id)


Tóm lại chỉ là để giải quyết vấn đề trên thôi, thực ra chi cần 2 table là đủ
Bài liên quan
0