我有三個表。我們稱他們爲a,b和a_to_b。 a_to_b包含(除其他之外)來自a和b的唯一ID以提供a和b之間的聯繫(顯然)。一個看起來是這樣的:幫助一條SQL語句
a_id, max_b, ...
a_to_b看起來像:
a_id, b_id, ...
我想創建一個查詢,是這樣的:
select a.a_name, a.max_b, a_to_b.(number of times a_id appears in a_to_b) for a, a_to_b where ...
只是我不知道正確的問題,要求谷歌找出如何做到這一點。總之,我不關心a_to_b中b_id的個別出現次數,a_id在該表中出現的次數。
我希望能夠看到我想要完成的事情。謝謝您的幫助。
編輯
現在我運行它,我意識到,我很想念查詢的一部分。
這是完整的故事。對不起,以前的誤導。
表A中:
group_id
other_stuff
表B:
user_id
other_stuff
表A_to_B:
group_id
user_id
m_type (int used to determine user's role in the group)
希望的輸出:
a.group_id, a_to_b.count(of group_id where m_type=4), b.user_id (user_id from a_to_b from the group_id that was grouped where m_type=2)
再次,我爲轉發道歉。第一次問我時應該更加小心。我希望我對這些東西足夠熟悉,能夠翻譯Rasika給出的東西,但我嘗試了一堆東西,而且mysql一直對我大吼一聲。
更多修改
我沒有什麼Rasika寫道,並與這個爛攤子想出了更多的一些嘗試:
select classes.class_id, classes.spaces - ifnull(dUtC.students,0) as openings, classes.semester_id, dUtC.teacher, users.fname, users.lname from (select teachUtC.class_id as class_id, numUtC.students as students, teachUtC.user_id as teacher from (select class_id, count(*) as students from users_to_classes where participation_level=4 group by class_id) as numUtC right join (select class_id, user_id from users_to_classes where participation_level=2) as teachUtC on teachUtC.class_id=numUtC.class_id) as dUtC, classes, users where users.user_id=dUtC.teacher and dUtC.class_id=classes.class_id
它的工作原理,但我不禁想,我這樣做錯了......我想知道是否有更清晰的方法來編寫它。
感謝
你可以嘗試將問題提煉到一個更簡單的語句。首先,輸出表應該是什麼樣子?什麼是最簡單的模式,你可以代表你的問題英寸如果你要刪除學生等,那麼完全這樣做。 – jimmyb 2011-04-04 23:31:58
我不確定我是否理解你想提出的建議。我以爲我已經儘可能簡單地佈置了它,但就像我說的,我不知道用文字描述情況的正確詞語 – baiano 2011-04-04 23:37:28