MySQL - Tek katıldı tabloda farklı koşullarda farklı alanlarını saymak

0 Cevap php

Tablo1 adında bir varsayımsal tablo sütunları ile vardır:

  • kimlik
  • durum 1
  • durumu 2
  • joinable_key

Olan ID birinckimlike joinable_key tekabül bir tane, Main_Table bulunmaktadır.

Ben durumu 1 ve ayrı ayrı durum 2 hem göre Table1 satırları sayabilirsiniz böyle bir moda onlara katılmak istiyorum - yani, ben first_condition, sayısı olarak "(Table1.condition1) sayımı yapmak mümkün olmak istiyorum seçim sorgusu second_condition "olarak (Table1.condtion2).

Sorgu muhtemelen şöyle olacaktır:

SELECT  Main_Table.some_column, COUNT(Table1.condition1) AS first_condition, COUNT(Table1.condtion2) AS second_condition
FROM  Main_Table
LEFT JOIN Table1 AS T1 on (T1.joinable_key = Main_Table.kimlik AND T1.condition1 = 'something')
LEFT JOIN Table1 AS T2 on (T2.joinable_key = Main_Table.kimlik AND T2.condition2 = 'something else')
GROUP BY (Main_Table.kimlik)

When this executes, however, both count results are equal, and actually multiply with each other. It is imperative that all results be included in the final output - including those that do not have any entries from Table1 - that is, if there is no row in Table1 with a joinable_key equal to Main_Table.kimlik, it too needs to be included.

Herkes aslında iki ayrı sorgu yapıyor ve PHP aracılığıyla ele önermek önce - evet, neden ve nasıl yapılabilir biliyorum, ama benim hedefim bu çoklu numara bir sorgudaki tüm yapılabilir olup olmadığını öğrenmek için.

Teşekkür ederim

0 Cevap