![]() |
Datenbank: Firbird • Version: 1.5 • Zugriff über: Fibplus
SQL Problem
Hallo zusammen
habe das Problem das ich mit folgendem funktionierendem SQL-Code noch zusätlich bei COUNT( MEMBER.GIDEON_NO ) COUNT_OF_GIDEON_NO und bei COUNT( MEMBER.AUX_NO ) COUNT_OF_AUX_NO nur die Felder haben möchte ( beachtet werden sollen ) bei denen der wert > 0 ist also sowas wie WHERE ((MEMBER.AUX_NO > 0))
SQL-Code:
hat da jemand einen Tipp?
SELECT CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG,
COUNT( MEMBER.GIDEON_NO ) COUNT_OF_GIDEON_NO, COUNT( MEMBER.AUX_NO ) COUNT_OF_AUX_NO FROM CAMPS INNER JOIN MEMBER ON (CAMPS.C_NO = MEMBER.C_NO) GROUP BY CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG ORDER BY CAMPS.CITY Shalom Manfred |
Re: SQL Problem
Du mußt innerhalb des count die Werte ausfiltern, das geht mit IIF() [ab FB2] oder CASE , COLAESCE
|
Re: SQL Problem
Zitat:
Was macht man mit Firebird 1.5 ? Ausser auf 2.0 Upgraden? Sorry das ging zu schnell: Du schreibst ja > oder CASE , COLAESCE Werde es testen. |
Re: SQL Problem
SQL-Code:
... COUNT( case when MEMBER.AUX_NO > 3 then MEMBER.AUX_NO else 0 end) ...
|
Re: SQL Problem
Besten Dank :drunken:
habe es wie von Dir vorgeschlagen so gelöst:
SQL-Code:
habe nur rausgefunden das leider die möglichkeit besteht das das Feld
SELECT CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG,
COUNT( MEMBER.GIDEON_NO ) COUNT_OF_GIDEON_NO, COUNT( case when MEMBER.AUX_NO >0 then MEMBER.AUX_NO else 0 end) COUNT_OF_AUX_NO FROM CAMPS INNER JOIN MEMBER ON (CAMPS.C_NO = MEMBER.C_NO) GROUP BY CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG ORDER BY CAMPS.CITY MEMBER.AUX_NO leer seinkann ( nicht NULL ) und dann erhalte ich eine Fehlermeldung. Ist es möglich dies zu berücksichtigen? Das Problem ist das wenn Der User einen Wert in das Feld eingiebt und diesen dann weder löscht... Manfred |
Re: SQL Problem
Welchen Typ hat das Feld?
|
Re: SQL Problem
Hallo!
Kannst du das nicht einfach in die JOIN-Bedingung integrieren? Dafür müsstest du natürlich ein zweites Mal die Tabelle Members einbinden und evtl. aus dem Inner ein Left-Join machen.
SQL-Code:
Cu,
SELECT CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG,
COUNT( MEMBER_GID.GIDEON_NO ) COUNT_OF_GIDEON_NO, COUNT( MEMBER_AUX.AUX_NO ) COUNT_OF_AUX_NO FROM CAMPS LEFT JOIN MEMBER_GID ON (CAMPS.C_NO = MEMBER_GID.C_NO and MEMBER_GID.GIDEON_NO>0) LEFT JOIN MEMBER_AUX ON (CAMPS.C_NO = MEMBER_AUX.C_NO and MEMBER_AUX.AUX_NO>0) GROUP BY CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG ORDER BY CAMPS.CITY Udontknow |
Re: SQL Problem
Zitat:
|
Re: SQL Problem
SQL-Code:
COUNT( case when MEMBER.AUX_NO >0 and trim(MEMBER.AUX_No) <> '' then MEMBER.AUX_NO else 0 end)
|
Re: SQL Problem
Zitat:
SQL-Code:
Cu,
SELECT CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG,
COUNT( MEMBER_GID.GIDEON_NO ) COUNT_OF_GIDEON_NO, COUNT( MEMBER_AUX.AUX_NO ) COUNT_OF_AUX_NO FROM CAMPS LEFT JOIN MEMBER_GID ON (CAMPS.C_NO = MEMBER_GID.C_NO and MEMBER_GID.GIDEON_NO<>'0') LEFT JOIN MEMBER_AUX ON (CAMPS.C_NO = MEMBER_AUX.C_NO and MEMBER_AUX.AUX_NO<>'0') GROUP BY CAMPS.C_NO, CAMPS.REG_NO, CAMPS.ZONE_NO, CAMPS.AREA_NO, CAMPS.CITY, CAMPS.COUNTRY, CAMPS.LANG ORDER BY CAMPS.CITY Udontknow |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz