AGB  ·  Datenschutz  ·  Impressum  







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

delphi 10 Sql Abfrage

Ein Thema von concept2015 · begonnen am 7. Aug 2019 · letzter Beitrag vom 9. Aug 2019
Antwort Antwort
Seite 2 von 2     12   
concept2015

Registriert seit: 22. Dez 2015
Ort: Nähe Dortmund
44 Beiträge
 
Delphi 7 Professional
 
#11

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 11:44
Ja, den Vorschlag habe ich etwas angepasst -
liefert aber Ergebnisse, die ich nicht zuordnen kann.

select distinct Name, Count(*)as Anz from stamm s
join zwischen z on z.tour=s.tournr
where z.tour='1'
and z.Jahr = "2019"
and z.woche_nr='31'
and s.Anzeigen = "J"
group by z.woche_Nr, s.name

*****************************
Name Anz
Alphag 46
Witten Gieseke 46
Faltenb. Witten 46
Hammer Feinstahl 23
Kalkm. Bo Höntrop 46
Kalkm. Bo. Mitte 46
Kalkm. Do Hombruch 46
Kalkm. Do Hörde 46
Kalkm. Do Mitte 92
Kalkm. Düs. Mitte 46
******************************
Da stehen Zahlen 23 bis 92 hinter ... das kann nicht sein ...
Maximal 3 Besuche können es sein - es werden wohl alle
Besuche angezeigt.

Ich sag ja - Loch im Kopf - bei dieser Abfrage.
Trotzdem DANKE für Eure Bemühung.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#12

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 11:53
Also wie bereits weiter oben geschrieben, was soll der join und das group by von woche_nr?
Was soll das Mischmasch mit ' und "?


Wenn du weitere Angaben zu Deinem Datenmodell hättest, könnte man besser helfen.
Was sind die Primärschlüssel-, was sind Fremdschlüssel Constraints?

Bitte mal ausprobieren:
Code:
select wer, count(*) as Anz
  from zwischen z
 where z.tour = '1'
   and z.Jahr = '2019'
   and z.woche_nr = '31'
 group by wer
Gruß, Jo
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 11:55
Das distinct ist unnötig, wenn du nach name gruppierst.

Schau dir doch mal an, was

select * from stamm s
join zwischen z on z.tour=s.tournr
where z.tour='1'
and z.Jahr = "2019"
and z.woche_nr='31'
and s.Anzeigen = "J"

liefert, dann weisst du, warum andere Werte stehen als du erwartest.
  Mit Zitat antworten Zitat
concept2015

Registriert seit: 22. Dez 2015
Ort: Nähe Dortmund
44 Beiträge
 
Delphi 7 Professional
 
#14

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 12:18
Herzlichen Dank an alle !
Jetzt habe ich es, dank Eurer Hilfe.

Manchmal ist es eben so ... Brett vorm Kopf
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#15

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 12:27
Prima!
Wie wär's wenn Du wie in einem Forum üblich, die Mitleser und Sucher teilhaben lässt, was das Problem bzw. die Lösung war?
Gruß, Jo
  Mit Zitat antworten Zitat
concept2015

Registriert seit: 22. Dez 2015
Ort: Nähe Dortmund
44 Beiträge
 
Delphi 7 Professional
 
#16

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 13:14
Nein, ich war zu schnell !
Es sah gut aus - der Fehler ist nur, ich brauche ALLE Kunden aus Stamm:

Stamm:
Select Distinct Name from Stamm
where Anzeigen = "J"
and TourNr = "1"
order by Name

Distinct deshalb, weil manche Kunden Mehrfach in der Liste stehen da sie mehrere
Geräte zur Prüfung haben -
ich will nur aber wissen ob der Fahrer (TourNr) in dieser Woche bei diesem Kunden war.

Das steht in der Tabelle Zwischen, diese Sätze sollen gezählt und in einer Spalte hinter dem Namen stehen.
Damit kann ich ermitteln ob der Fahrer ((Tour) in Zwischen) dort war oder bei 0 nicht dort war.

Das Beispiel von JOBO:

select wer, count(*) as Anz
from zwischen z
where z.tour = '1'
and z.Jahr = '2019'
and z.woche_nr = '31'
group by wer

zeigt mir NUR die besuchten Kunden - nicht die Kunden, wo er nicht war !
Ich brauche:

Name AnzBesuche
Kunde1 2
Kunde2 0
Kunde3 1
Kunde4 0
Kunde5 2
.... alle weiteren Kunden von Tour 1


Theoretische Lösung !!!
Select Distinct Stamm.Name AS Kunde where Stamm.Anzeingen = "J" and Stamm.TourNr = "1"

PLUS Count(Zwischen.*) where Zwischen.Jahr ="2019" and Zwischen.Woche ="32" and Zwischen.Tour = (Stamm.TourNr)
und das auch MIT einer 0

Tut mir leid - ich weiss nicht wie ich es anders beschreiben soll.
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 13:27
Dann nimm statt des JOINS einen LEFT OUTER JOIN

Oder du macht aus der COUNT(*) eine Subquery.

select wer, (select count(*) from zwischen z where z.tour = s.tour and .... ) as Anzahl
from stamm s
where .....
  Mit Zitat antworten Zitat
concept2015

Registriert seit: 22. Dez 2015
Ort: Nähe Dortmund
44 Beiträge
 
Delphi 7 Professional
 
#18

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 13:51
Das war´s !!!

Der Tip von TigerLilly bringt genau das, was ich 3 Tage gesucht habe.

DIE LÖSUNG IST !

select Name,

(select count(*) from zwischen z
where z.tour = s.tourNr
and z.wer = s.Name
and Jahr ="2019"
and Woche_Nr = "31" )
as Anzahl

from stamm s
where s.anzeigen = "J"
and s.TourNr = "1"

DANKE DANKE DANKE
Mit 65 schaltet, bei zu langer Betrachtung, das Gehirn auf (Alles ist grau)
bei mir jedenfalls.

Eine Subquery !!!!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#19

AW: delphi 10 Sql Abfrage

  Alt 8. Aug 2019, 21:38
mit [ CODE=sql]....SQLTEXT..[ /CODE] (ohne die Leerzeichen)sind Deine Abfragen etwas besser zu lesen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 ( 8. Aug 2019 um 21:41 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#20

AW: delphi 10 Sql Abfrage

  Alt 9. Aug 2019, 08:36
Distinct deshalb, weil manche Kunden Mehrfach in der Liste stehen da sie mehrere
Geräte zur Prüfung haben -
Das ist die Info, die wir früher hätten haben müssen und erklärt wohl auch die hohen Zahlen bei der Join-Variante.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:13 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