AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Verständnisfrage bei Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage bei Abfrage

Ein Thema von norbert3 · begonnen am 1. Feb 2016 · letzter Beitrag vom 5. Feb 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von norbert3
norbert3

Registriert seit: 24. Mai 2006
Ort: Sachsen
65 Beiträge
 
Delphi 7 Enterprise
 
#1

Verständnisfrage bei Abfrage

  Alt 1. Feb 2016, 20:00
Datenbank: MYSQL • Version: 5.4 • Zugriff über: QUERY
Hallo Leute,
ich brauch wieder mal eure Hilfe. Hier erstmal der Code:

Code:
select count(*) as cntAnzahl, t2.FamName , t2.Adresse, t2.Strasse, t2.KmHome
from norbertspringer.tblBstName t2
       inner join norbertspringer.tbl_BstAZ t1
       on t1.id_bst = t2.BstID

        where (t1.Datum between"2015-01-01" and "2015-12-31")
        and (t2.KmHome >=1)
    group by t2.FamName
       order by t1.Datum asc
Ich möchte die Anzahl der Fahrten zur Baustelle pro Jahr ermitteln. Dies macht der Code auch wie er soll.

Jedoch wenn es zwei Fahrten pro Tag gibt, zählt der Code diese auch mit und das darf nicht sein.
Also eine Fahrt pro Tag, gruppiert nach FamName.

Ich hoffe ihr könnt mir auf die Sprünge helfen.
Danke im Voraus.

Norbert
Norbert Springer
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Verständnisfrage bei Abfrage

  Alt 1. Feb 2016, 20:20
Da Du das Datum nicht in der Spaltenauswahl und nicht in der Gruppierung hast, wird es dort auch nicht berücksichtigt.

Meinst Du eventuell sowas?
SQL-Code:
select
  count(*) as cntAnzahl,
  t2.FamName,
  t2.Adresse,
  t2.Strasse,
  t2.KmHome,
  t1.Datum
from norbertspringer.tblBstName t2
inner join norbertspringer.tbl_BstAZ t1
on t1.id_bst = t2.BstID
where (t1.Datum between "2015-01-01" and "2015-12-31")
and (t2.KmHome >= 1)
group by
  t2.FamName,
  t2.Adresse,
  t2.Strasse,
  t2.KmHome,
  t1.Datum
order by
  t1.Datum asc
Wobei mir zugebenermaßen die Aufgabenstellung nicht ganz klar geworden ist.

Möchtest Du wissen, wieviele Fahrten gemacht wurden?

oder

Möchtest Du wissen an wievielen Tagen Fahrten gemacht wurden?

oder

Möchtest Du wissen, wieviele Fahrten pro FamName gemacht wurden?

oder

Möchtest Du wissen, an welchen Tagen Fahrten gemacht wurden, sortiert nach FamName?

Wenn es pro FamName nur 1 als Anzahl geben kann, dürfte sich ein Zählen ja erübrigen.

Dann meinst Du eventuell sowas?
SQL-Code:
select
  distinct
  t2.FamName,
  t2.Adresse,
  t2.Strasse,
  t2.KmHome,
  t1.Datum
from norbertspringer.tblBstName t2
inner join norbertspringer.tbl_BstAZ t1
on t1.id_bst = t2.BstID
where (t1.Datum between "2015-01-01" and "2015-12-31")
and (t2.KmHome >= 1)
order by
  t1.Datum asc
  Mit Zitat antworten Zitat
jobo

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

AW: Verständnisfrage bei Abfrage

  Alt 1. Feb 2016, 20:24
Das ist mit Deinen Angaben etwas schwierig. Wie sind denn die Fahrten in welcher Tabelle abgebildet.
Im Prinzip musst Du so vorgehen, dass Du die Baustellen je Tag
1. gruppierst (oder Distinct)
2. dann zählen

Wie sinnvoll die Unterschlagung von Mehrfachfahrten ist, musst Du natürlich selber wissen.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von norbert3
norbert3

Registriert seit: 24. Mai 2006
Ort: Sachsen
65 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Verständnisfrage bei Abfrage

  Alt 1. Feb 2016, 20:32
Hallo miteinander, vielen Dank für die schnellen Antworten.
Zitat:
Möchtest Du wissen, wie viele Fahrten pro FamName gemacht wurden?
Genau. Die Abfrage ist als Fahrtkostenabrechnung für das Finanzamt.
Dort gibt es ja nur eine Fahrt pro Tag.
Da ich aber manchmal aber zwei bzw. drei Baustellen pro Tag habe, möchte ich eine Fahrt pro Tag ermitteln, das ganze gruppiert nach Baustellenname(FamName)

Code:
select distinct t2.FamName , t2.Adresse, t2.Strasse, t2.KmHome, t1.Datum, count(*) as Anzahl
from norbertspringer.tblBstName t2
       inner join norbertspringer.tbl_BstAZ t1
       on t1.id_bst = t2.BstID

       where (t1.Datum between"2015-01-01" and "2015-12-31")
       and (t2.KmHome >=1)
       group by t2.FamName
       order by t1.Datum asc
So erhalte ich das gleiche Ergebnis.

Gruß Norbert
Norbert Springer
  Mit Zitat antworten Zitat
jobo

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

AW: Verständnisfrage bei Abfrage

  Alt 2. Feb 2016, 05:41
Das ist mit Deinen Angaben etwas schwierig. Wie sind denn die Fahrten in welcher Tabelle abgebildet.
Im Prinzip musst Du so vorgehen, dass Du die Baustellen je Tag
1. gruppierst (oder Distinct)
2. dann zählen
Im 1. Schritt schrumpfst Du die Fahrdaten auf 1 pro Tag.
Im 2. machst Du nur das, was Du eh schon machst.

Ok, also ich rate mal, dass norbertspringer.tbl_BstAZ Deine Fahrtdaten beinhaltet.
Ersetze "norbertspringer.tbl_BstAZ t1" durch soetwas, gemäß Vorschlag oben:
Code:
(Select distinct id_bst, Datum from norbertspringer.tbl_BstAZ) t1
Die Datumseingrenzung kannst Du auch da rein ziehen, dürfte etwas flotter sein, spielt aber für Dich bzw. die Datenmenge vielleicht keine Rolle.
Das setzt voraus, dass die Datumsangaben ohne Uhrzeit gespeichert sind. Ist das nicht der Fall, muss das Statement oben noch eine Kürzung auf den reinen Datumswert erhalten.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Verständnisfrage bei Abfrage

  Alt 2. Feb 2016, 07:14
Ich würde es etwas anders formulieren, nicht Fahrten, sondern Tage an denen gefahren wurde werden gezählt.
Also ungefähr so:
SQL-Code:
select Count(distinct Datum),FamName
from
(Select distinct id_bst, Datum,FamName from norbertspringer.tbl_BstAZ) t1
Group by FamName
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von norbert3
norbert3

Registriert seit: 24. Mai 2006
Ort: Sachsen
65 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Verständnisfrage bei Abfrage

  Alt 2. Feb 2016, 19:45
Hallo miteinander erstmal vielen Dank an alle für eure Mühe,

Code:
select count(Distinct Datum) as cntDatum
from
(Select distinct id_bst, Datum from norbertspringer.tbl_BstAZ)t1
WHERE Datum between "2015-01-01" and "2015-12-31"
Das Ergebnis ist korrekt. Allerdings ist FamName aus der Tabelle tbl_BstName. Wie erweitere ich diese Abfrage so, dass ich auch die zweite Tabelle mit abfragen kann?

Gruß Norbert
Norbert Springer
  Mit Zitat antworten Zitat
Jumpy

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

AW: Verständnisfrage bei Abfrage

  Alt 3. Feb 2016, 10:12
So vllt.?

SQL-Code:
select
  t1.id_bst, count(t1.Datum) as cntDatum,
  t2.FamName , t2.Adresse, t2.Strasse, t2.KmHome
from
  (Select distinct id_bst, Datum from norbertspringer.tbl_BstAZ
   WHERE Datum between "2015-01-01" and "2015-12-31") t1
Left Join
  tbl_BstName t2
On t1.id_bst=t2.BstID
Group By
  t1.id_bst, t2.FamName , t2.Adresse, t2.Strasse, t2.KmHome
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von norbert3
norbert3

Registriert seit: 24. Mai 2006
Ort: Sachsen
65 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Verständnisfrage bei Abfrage

  Alt 3. Feb 2016, 18:49
Vielen Dank, genau so läuft es.

Danke nochmals, da wär ich nie drauf gekommen.

Gruß Norbert
Norbert Springer
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#10

AW: Verständnisfrage bei Abfrage

  Alt 4. Feb 2016, 06:01
Moin...
Zitat:
WHERE Datum between "2015-01-01" and "2015-12-31"
Datumsfelder als String? Ist das eine Vorgabe oder kannst du das ändern? Mich hat es gerade so geschüttelt das der Kaffe auf dem Tisch gelandet ist...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:07 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