diğer üyeleri listelerine bağlı mySQL tablo bağlama, grup, tüm üyeleri görüntüleyerek

1 Cevap php

Ben kendisi ile iyi çalışıyor, bir grup (g1) ile bir veritabanı ve üyeleri (m1) bir listesi var.

Bir sorgu TÜM üyeleri (M1) getirmek + bir sonucu olarak (m2-3) olur böylece Ancak ben bu kadar listede için farklı gruplar (g2-3) eklemek için grup (g1) yeteneğini eklemek istiyorum.

Benim tablolar şunlardır:

Grubu (1) Tablo: Grup1,

Üyesi (2) tablo: MemberA, MemberB, MemberC vb

Ben grup (1) bir Grup (2) üye abone istediği girişleri bağlayan bazı tip tablo, gerektiğini düşünüyorum.

Ben bağlantı tablosu gibi görünecektir düşünüyordum:

Groupıd, Grup Adı, Groupıd, GRUP İsim abone

Grubu (1), FancyGroup (1) Grup (2), perişan Grubu (2)

Bu I Grubu (1) sorgu için sonuçlar, Grup abone sonra gibi bakmak istiyorum ne (2):

Fancy Group Fancy MemberA Fancy MemberB Fancy MemberC Shabby MemberA Shabby Member B

Herhangi bir düşünce? Ben bu uzun soru farkında ama bunu doğrulan daha kısa bir yol bilmiyordu?

Teşekkürler,

Michael

GÜNCELLEME 3/9:

Bunlar benim tablo adları şunlardır:

Grup, "aile" denir; Satırlar (userid, loginName .. vb) vardır

Üye grubu "üyesi" denir; satırlar (memberid, loginName, isim, vb) vardır

Üyelik tablosu "user2member" denir; satırlar (userid, memberid) vardır.

Bu benim sorgu için kullanıyorum budur:

SELECT member.name   FROM family JOIN user2member on family.userid = member.memberid JOIN member on user2member.name = member.name   WHERE family.userid = '30' ORDER BY member.name

Ben bu hatayı alacağım: ~ ... yakınındaki kullanılacak sözdizimi 'Â NEREDE family.userid = '30' hattı 5'de member.name LİMİT 0, 30 'ORDER BY

Fikirler?

1 Cevap

Ben grupların ve üyeleri arasında bir çok-çok ilişkisi temsil etmek için çalışıyorum düşünüyorum.

To do this, you need a group table with a row for each group. GroupID, GroupName, whatever, whatever.

You need a member table with a row for each person. MemberID, Firstname, Lastname, whatever, whatever.

Daha sonra, bir groupmembership tablo birleştirmek tablo gerekir. Basit grup üyeliği tablo, bu gibi satırlar vardır

MemberID, Groupıd

Bu grubun üye başına bir satır vardır. Uygulama böyle DateJoined veya ActiveMembership, ya da her neyse, onları gerekirse bu tabloya başka şeyler ekleyebilirsiniz.

Sonra, kullanmak istediğiniz verilerinizi geri almak için katılır. Eğer "delileri" grubu üyelerinin listesini istedim, bir böyle katılmak kullanmak istiyorum.

SELECT m.Firstname, M.Lastname
  FROM group g
  JOIN groupmembership gm on g.GroupID = gm.GroupID
  JOIN member m on gm.MemberID = m.MemberID
 WHERE g.GroupName = 'geeks'
ORDER BY M.Lastname, M.Firstname

Eğer herhangi bir gruba ait değil üyelerinin listesini istedim, bunu istiyorum.

SELECT m.Firstname, M.Lastname
  FROM member m
  LEFT JOIN groupmembership gm on m.MemberID = gm.MemberID
 WHERE gm.GroupID IS NULL
ORDER BY M.Lastname, M.Firstname

Bu bir süper kullanışlı tasarım deseni bulunuyor. İyi şanslar.