AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Problem

Ein Thema von manfred_h · begonnen am 18. Mai 2007 · letzter Beitrag vom 21. Mai 2007
Antwort Antwort
Seite 1 von 3  1 23      
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#1

SQL Problem

  Alt 18. Mai 2007, 17:03
Datenbank: Firbird • Version: 1.5 • Zugriff über: Fibplus
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:
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
hat da jemand einen Tipp?

Shalom
Manfred
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Problem

  Alt 18. Mai 2007, 17:14
Du mußt innerhalb des count die Werte ausfiltern, das geht mit IIF() [ab FB2] oder CASE , COLAESCE
Markus Kinzler
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#3

Re: SQL Problem

  Alt 18. Mai 2007, 17:23
Zitat von mkinzler:
Du mußt innerhalb des count die Werte ausfiltern, das geht mit IIF() [ab FB2] oder CASE , COLAESCE
Hi schön von Dir zu lesen.
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL Problem

  Alt 18. Mai 2007, 17:30
... COUNT( case when MEMBER.AUX_NO > 3 then MEMBER.AUX_NO else 0 end) ...
Markus Kinzler
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#5

Re: SQL Problem

  Alt 18. Mai 2007, 17:49
Besten Dank

habe es wie von Dir vorgeschlagen so gelöst:
SQL-Code:
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
habe nur rausgefunden das leider die möglichkeit besteht das das Feld
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: SQL Problem

  Alt 18. Mai 2007, 17:52
Welchen Typ hat das Feld?
Markus Kinzler
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#7

Re: SQL Problem

  Alt 18. Mai 2007, 17:52
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:
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
Cu,
Udontknow
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#8

Re: SQL Problem

  Alt 18. Mai 2007, 17:54
Zitat von mkinzler:
Welchen Typ hat das Feld?
AUX_NO T30 /* T30 = VARCHAR(30) */,
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: SQL Problem

  Alt 18. Mai 2007, 17:58
COUNT( case when MEMBER.AUX_NO >0 and trim(MEMBER.AUX_No) <> 'then MEMBER.AUX_NO else 0 end)
Markus Kinzler
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#10

Re: SQL Problem

  Alt 18. Mai 2007, 17:58
Zitat von manfred_h:
Zitat von mkinzler:
Welchen Typ hat das Feld?
AUX_NO T30 /* T30 = VARCHAR(30) */,
Dementsprechend natürlich angepasst:

SQL-Code:
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
Cu,
Udontknow
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz