![]() |
Datenbank: MYSQL • Version: 5.4 • Zugriff über: QUERY
Verständnisfrage bei Abfrage
Hallo Leute,
ich brauch wieder mal eure Hilfe. Hier erstmal der Code:
Code:
Ich möchte die Anzahl der Fahrten zur Baustelle pro Jahr ermitteln. Dies macht der Code auch wie er soll.
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 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 |
AW: Verständnisfrage bei Abfrage
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:
Wobei mir zugebenermaßen die Aufgabenstellung nicht ganz klar geworden ist.
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 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 |
AW: Verständnisfrage bei Abfrage
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. |
AW: Verständnisfrage bei Abfrage
Hallo miteinander, vielen Dank für die schnellen Antworten.
Zitat:
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:
So erhalte ich das gleiche Ergebnis.
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 Gruß Norbert |
AW: Verständnisfrage bei Abfrage
Zitat:
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:
Die Datumseingrenzung kannst Du auch da rein ziehen, dürfte etwas flotter sein, spielt aber für Dich bzw. die Datenmenge vielleicht keine Rolle.
(Select distinct id_bst, Datum from norbertspringer.tbl_BstAZ) t1
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. |
AW: Verständnisfrage bei Abfrage
Ich würde es etwas anders formulieren, nicht Fahrten, sondern Tage an denen gefahren wurde werden gezählt.
Also ungefähr so:
SQL-Code:
Gruß
select Count(distinct Datum),FamName
from (Select distinct id_bst, Datum,FamName from norbertspringer.tbl_BstAZ) t1 Group by FamName K-H |
AW: Verständnisfrage bei Abfrage
Hallo miteinander erstmal vielen Dank an alle für eure Mühe,
Code:
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?
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" Gruß Norbert |
AW: Verständnisfrage bei Abfrage
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 |
AW: Verständnisfrage bei Abfrage
Vielen Dank, genau so läuft es.
Danke nochmals, da wär ich nie drauf gekommen. Gruß Norbert |
AW: Verständnisfrage bei Abfrage
Moin...:P
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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