看着你的SQL,我有點不確定你想要發生什麼。
兩件檢索eTG.evrak_tipi_grup_adi和eT.evrak_tipi,而是一個羣體的一個,而第二組由其它。如果非分組字段的值因分組字段而異,則返回的值來自未指定的行,因此可能無意義。
如果值不變化(即,在evrak_tipleri任何記錄只對evrak_tipi_gruplari一個記錄 - 怙docuement類型和文件類型組),那麼當前的查詢可以寫成: -
SELECT eTG.evrak_tipi_grup_adi, eT.evrak_tipi, COUNT(eTG.evrak_tipi_grup_adi) AS toplamGrup
FROM evraklar evr
LEFT JOIN kullanicilar kull ON evr.evrak_kaydeden_ybs_kullanici_id=kull.id
LEFT JOIN evrak_tipleri eT ON evr.evrak_tipi=eT.id
LEFT JOIN evrak_tipi_gruplari eTG ON evr.evrak_tipi_grubu=eTG.id
GROUP BY eTG.evrak_tipi_grup_adi, eT.evrak_tipi
SELECT eTG.evrak_tipi_grup_adi, eT.evrak_tipi, COUNT(eT.evrak_tipi) AS toplamTiptekiler
FROM evraklar evr
LEFT JOIN kullanicilar kull ON evr.evrak_kaydeden_ybs_kullanici_id=kull.id
LEFT JOIN evrak_tipleri eT ON evr.evrak_tipi=eT.id
LEFT JOIN evrak_tipi_gruplari eTG ON evr.evrak_tipi_grubu=eTG.id
GROUP BY eTG.evrak_tipi_grup_adi, eT.evrak_tipi
所以可能只是合併: -
SELECT eTG.evrak_tipi_grup_adi, eT.evrak_tipi, COUNT(eTG.evrak_tipi_grup_adi) AS toplamGrup, COUNT(eT.evrak_tipi) AS toplamTiptekiler
FROM evraklar evr
LEFT JOIN kullanicilar kull ON evr.evrak_kaydeden_ybs_kullanici_id=kull.id
LEFT JOIN evrak_tipleri eT ON evr.evrak_tipi=eT.id
LEFT JOIN evrak_tipi_gruplari eTG ON evr.evrak_tipi_grubu=eTG.id
GROUP BY eTG.evrak_tipi_grup_adi, eT.evrak_tipi
計數只會帶回非空值在這些領域的數量雖然。我懷疑你可能想用COUNT(DISTINCT ....)代替。
然而,這在很大程度上取決於你想算什麼以及表如何相互關聯(即一對多的關係,等等)
編輯
忽略現在的用戶,但我認爲這是你想要什麼(使用表和列名從SQL小提琴): -
SELECT doc_types.id,
doc_types.doc_type_name,
Sub1.doc_type_group_name,
COUNT(documents.id) AS DocsForDocType,
Sub1.DocsForDocTypeGroup
FROM doc_types
LEFT OUTER JOIN documents
ON doc_types.id = documents.doc_type_id
LEFT OUTER JOIN
(
SELECT doc_type_groups.id, doc_type_groups.doc_type_group_name, COUNT(documents.id) AS DocsForDocTypeGroup
FROM doc_type_groups
INNER JOIN documents
ON doc_type_groups.id = documents.doc_type_group_id
GROUP BY doc_type_groups.id, doc_type_group_name
) Sub1
ON doc_types.doc_type_group_id = Sub1.id
GROUP BY doc_types.id, doc_types.doc_type_name, Sub1.doc_type_group_name, Sub1.DocsForDocTypeGroup;
這是獲得文檔類型和該類型文件的數量,同時也越來越文檔組文檔類型和文檔數量在這個組中。
請提供CREATE TABLE和INSERT INTO命令,以便容易地再現您的情況 –
我在哪裏可以把SQL文件的網站的? – caglaror
sqlfiddle.com會訣竅。但是,只需粘貼CREATE和INSERT語句就足夠了。這是一個艱難的部分。 –