Tham chiếu nhiều trường đến một bảng trong sql

Thảo luận trong 'Khoa Khoa Học Máy Tính' bắt đầu bởi vtn, 30 Tháng bảy 2012.

  1. Offline

    vtn

    • Windows 2.0

    Số bài viết:
    47
    Đã được thích:
    23
    Điểm thành tích:
    20
    Chào các bạn, mình gặp một vấn đề nhỏ như sau mà mãi vẫn chưa tìm ra câu trả lời.
    VD mình có 2 bảng
    GIANG_VIEN(id, name, id_chucvu1, id_chucvu2, id_chucvu3)
    CHUC_VU(id_cv, tenchucvu)

    Mô tả: Một giảng viên có thể làm nhiều chức vụ, từ id_chucvu ở bảng GIANG_VIEN, hiển thị tên các chức vụ của giảng viên đó, tên chức vụ lấy từ bảng CHUC_VU

    GIANG_VIEN
    idnameid_chucvu1id_chucvu2id_chucvu3
    1Nguyễn Văn A134
    2Nguyễn Văn B1
    3Nguyễn Văn C34


    CHUC_VU
    id_cvtenchucvu
    1Giảng viên
    2Hành chính
    3Bảo vệ
    4Quản thư
    3Nguyễn Văn C


    Kết quả
    idnametenchucvu1tenchucvu2tenchucvu3
    1Nguyễn Văn AGiảng viênBảo vệQuản thư
    2Nguyễn Văn BGiảng viên
    3Nguyễn Văn CBảo vệQuản thư


    Mọi người hướng dẫn mình viết cấu lệnh sql với, xin cảm ơn!
  2. Offline

    clandn.angel

    • friend

    Số bài viết:
    655
    Đã được thích:
    361
    Điểm thành tích:
    450
    2 bảng này hình như đâu có liên kết với nhau để tham chiếu giá trị đc nhỉ :-??
    hongoctrien thích bài này.
  3. Offline

    vtn

    • Windows 2.0

    Số bài viết:
    47
    Đã được thích:
    23
    Điểm thành tích:
    20
    Em xin lỗi. Trong mysql :D
  4. Offline

    vtn

    • Windows 2.0

    Số bài viết:
    47
    Đã được thích:
    23
    Điểm thành tích:
    20
    Nói nôm na là như thế này
    Mình có 2 bảng dữ liệu:
    GIAOVIEN (id, ten, id_cv1, id_cv2)
    CHUCVU(id_cv, tenchucvu)

    Mọi người cho em hỏi làm sao để hiển thị tên chức vụ 1 và 2 của giáo viên đó với.
    Xin cảm ơn mọi người!
  5. Offline

    alt+F4

    • Core i3

    Số bài viết:
    596
    Đã được thích:
    423
    Điểm thành tích:
    450
    Thường thì trong các mã nguồn php & mysql thì mình thấy người ta không chia riêng nhiều chức vụ theo nhiều trường như chức vụ 1, chức vụ 2, chức vụ 3!
    Vì thực tế người ta thường gom nó lại chung một trường là chức vụ! rồi các id_chucvu người ta cách nhau bởi dấu phẩy, sau đó người ta tách từng id_chucvu riêng rồi tham chiếu đến từng tên chức vụ trong bảng chức vụ!

    Một số bạn đã quen với CSDL của VBB hay nukeviet, joomla người ta thường phân chia quyền hạn cho một user theo cách này! Và mình nghĩ vấn đề của bạn cũng tương tự!
    hongoctrien thích bài này.
  6. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Chắc là cái này
    [IMG]

    Mã:
    select GV.*,CV.tenchucvu AS CHUCVU1,CV2.tenchucvu AS CHUCVU2 from GIAOVIEN GV left join CHUCVU CV ON GV.id_cv1=CV.id_cv LEFT JOIN CHUCVU CV2 ON GV.id_cv2=CV2.id_cv

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí