Bu 5 tablolar için SQL sorgu yazmak nasıl?

1 Cevap php

I am writiçindeg an application that helps book exchange between users. I am usiçindeg PHP ve MySQL, ve I am pretty new to them her ikisi de.

Ben 5 tablo, 3 veri tabloları ve 2 servis tablolar var:

  1. kullanıcı: kullanıcı özellikleri ile (User_id, isim, doğum ... vb).

  2. kitap: kitap nitelikleri (book_id, isim, yazar, yayıncı ... vb).

  3. fotokopi: Bir kitap (copy_id, durumu, yveyaumlar ... vs) gerçek kopyalarını gösterir.

  4. user_copy: kullanıcı kimliği ve copyID dışında oluşur, kopya hangi tutan kullanıcı açıklar.

  5. copy_book: copyID ve BookID dışında oluşur, kopya ve kitabın bağlantısını temsil

My question is: what is the easiest ve most efficient statement fveya gettiçindeg the book attributes ve copy attributes fveya each copy that a user holds?

1 Cevap

Kitap, kopya, user_copy ve copy_book: Sen ilgilenen tüm tabloları birleştirmek iç gerekir. Bir kullanıcı tarafından düzenlenen tüm kopyalarda niteliklerini döndürür SELECT deyimi bu gibi görünebilir:

SELECT   B.bookID
       , B.name
       , B.author
       , B.publisher
       , C.condition
       , C.comments
       -- you may get other fields that you are interested in here..
  FROM book B
       INNER JOIN copy_book CB ON B.bookID = CB.bookID
       INNER JOIN user_copy UC ON UC.copyID = CB.copyID
       INNER JOIN copy C ON C.copyID = UC.copyID
  WHERE UC.userID = <the user Id that you want>

Ben bu deyimi ne güzel anlatabildim ancak herhangi bir sorunuz varsa, lütfen sorunuz.