![]() |
Datenbank: Access • Version: 2007 • Zugriff über: jet
Access Group by
Hallo. Ich habe folgendes Problem.
Wenn ich diese Anfrage ohne Group By benutze, werden in meinem Grid ALLE Einträge von *Schuppenanzahl* angezeigt. Es soll jedoch nur der letzte Eintrag jeweils von *Schuppenanzahl* angezeigt werden. Meine Idee war es mit Group By die einträge zu gruppieren, was jedoch nicht klappt.
SQL-Code:
Eine weitere Idee von mir war es auch mit TOP 1 ein Limit zu setzen, was aber bei dem Inner Join nicht geht.
'SELECT * FROM Schuppen s'
+ ' INNER JOIN Schuppenanzahl a' + ' ON s.ID = a.ParentID' + ' WHERE (s.Stand LIKE ''%' + searchstring + '%'') GROUP BY a.ParentID, s.ID ORDER BY a.datum'; Hat jemand eine Idee, vielleicht mit nem SubSelect? |
Re: Access Group by
Wenn Access einen Subselect mit mehreren Werten unterstützt:
SQL-Code:
Select s.*, (select Top 1 * from Schuppenanzahl a where ParentID = s.ID order by ID desc) ...
|
Re: Access Group by
Was auch immer du da eigentlich machen willst...
SQL-Code:
oder
SELECT *
FROM schuppen s INNER JOIN schuppenanzahl a ON s.id = a.parentID WHERE s.stand LIKE :searchstring AND datum = (SELECT MAX(datum) FROM schuppenanzahl WHERE parentID = s.id) ORDER BY a.datum
SQL-Code:
SELECT *
FROM schuppen s WHERE s.stand LIKE :searchstring AND datum = (SELECT MAX(datum) FROM schuppenanzahl WHERE parentID = s.id) |
Re: Access Group by
Zitat:
Zitat:
[quote="omata"]Was auch immer du da eigentlich machen willst...
SQL-Code:
Mhm das kann ich wohl compilieren und funktioniert auch, hat aber nicht den gewünschten Effekt.
SELECT *
FROM schuppen s INNER JOIN schuppenanzahl a ON s.id = a.parentID WHERE s.stand LIKE :searchstring AND datum = (SELECT MAX(datum) FROM schuppenanzahl WHERE parentID = s.id) ORDER BY a.datum Ich möchte eigentlich nur Tabelle Schuppen durchsuchen und dazu passend die LETZTEN einträge von Schuppenanzahl angezeigt bekommen, so bekomme ich noch immer ALLE einträge von Schuppenanzahl angezeigt. :( |
Re: Access Group by
Zitat:
|
Re: Access Group by
Eigentlich brauch ich nur datum und preis.
Habe es auch schon mit
Delphi-Quellcode:
... versucht, hat aber nicht geklappt, selber fehler.
(SELECT Top 1 datum, preis FROM
|
Re: Access Group by
Zitat:
Zitat:
Zitat:
Also noch ein neuer Versuch...
SQL-Code:
SELECT *
FROM schuppen s INNER JOIN schuppenanzahl a ON s.id = a.parentID WHERE s.stand LIKE :searchstring AND datum = (SELECT MAX(datum) FROM schuppenanzahl) ORDER BY a.datum |
Re: Access Group by
Sorry.
Ich versuchs nochma klar zu sagen: Ich möchte EINE komplette Zeile pro Eintrag haben, welche sich aus Schuppen und Schuppenanzahl zusammensetzt. Mit der aktuellen Variante bekomme ich leider wieder alle Einträge aus Schuppenanzahl, was ich nicht möchte. Ich hoffe es ist nun was klarer, tut mir leid. :oops: |
Re: Access Group by
Ich verstehe deine Tabellen- und Daten-Struktur leider nicht, sorry. Vielleicht kann dir ja jemand anderes helfen.
|
Re: Access Group by
Schon okay. Danke trotzdem. :)
Hier nochmal ne genauere Erklärung:
SQL-Code:
also so siehts aus. meine abfrage...
'SELECT * FROM Schuppen s'
+ ' INNER JOIN Schuppenanzahl a' + ' ON s.ID = a.ParentID' + ' WHERE (s.Stand LIKE ''%' + searchstring + '%'') GROUP BY a.ParentID, s.ID ORDER BY a.datum'; Schuppen: 12 [ID], Kartoffeln [Artikel] Schuppenanzahl: 12 [ParentID], 20€ [Preis], 10.02.1988 [Datum] 12 [ParentID], 23€ [Preis], 20.02.1988 [Datum] und ich möcht eben nur einen eintrag aus Schuppenanzahl haben und nicht beide... So sieht mein aktueller versuch aus, als SubSelect. Geht nur leider nicht. :wall:
SQL-Code:
QHousehold.SQL.Text := 'SELECT (SELECT * FROM Schuppen s'
+' WHERE (s.Stand LIKE ''%' + searchstring + '%'')),' +' (SELECT TOP 1 preis FROM Schuppenanzahl WHERE ParentID = s.ID ORDER BY datum DESC) AS Preis,' +' (SELECT TOP 1 datum FROM Schuppenanzahl WHERE ParentID = s.ID ORDER BY datum DESC) AS Datum' +' FROM Schuppen; |
Re: Access Group by
Ich glaube, Du suchst
![]() |
Re: Access Group by
Und was sprach dann gegen diesen Vorschlag?
SQL-Code:
SELECT *
FROM schuppen s INNER JOIN schuppenanzahl a ON s.id = a.parentID WHERE s.artikel LIKE 'Kar%' AND datum = (SELECT MAX(datum) FROM schuppenanzahl WHERE parentID = s.id) ORDER BY a.datum |
Re: Access Group by
Zitat:
Schuppen: 12 [ID], Kartoffeln [Artikel] 12 [ParentID], 20€ [Preis], 10.02.1988 [Datum] 12 [ID], Kartoffeln [Artikel] 12 [ParentID], 23€ [Preis], 20.02.1988 [Datum] und eben nicht nur den letzten Eintrag. :( @DeddyH Das sieht mir aber sehr nach dem aus, was omata schon hier als beispiel gepostet hat. |
Re: Access Group by
Das zeigt uns eindrucksvoll, dass Access kein SQL kann.
|
Re: Access Group by
Zitat:
Access ist einfach toll :wall: Ein neuer Versuch...
SQL-Code:
SELECT *
FROM schuppen s LEFT JOIN (SELECT parentID, preis, datum FROM schuppenanzahl a WHERE a.datum = (SELECT MAX(datum) FROM schuppenanzahl x WHERE x.parentID = a.parentID)) a ON s.id = a.parentID WHERE s.artikel LIKE 'Kar%' |
Re: Access Group by
Nun bekomm ich: Query1 Das Feld "s.ID" wurde nicht gefunden.
|
Re: Access Group by
Access wird seinen Ruf als Speilverderber mal wieder gerecht
|
Re: Access Group by
Muss es denn unbedingt Access sein? Mit einer "richtigen" DB hätte man diese Probleme nicht.
|
Re: Access Group by
Leider muss es schon Access sein. Ich habe an für sich, bisher nie Probleme damit gehabt. Konnte bisher alles machen wie gedacht. Nur eben dieses Problem, ging bisher nicht. Da muss es doch auch einen Weg für geben, oder nicht? :(
|
Re: Access Group by
Villeicht, wenn du das Ergebnis im Clientprogramm zusammensetzt
|
Re: Access Group by
Ich habe nochmal was rumprobiert und nun funktionierts.
Eigentlich ist es ziemlich identisch mit dem von omata, nur habe ich zuerst das Datum, danach das *s.artikel Like* genommen, nun funktioniert es. :shock:
SQL-Code:
SELECT *
FROM schuppen s INNER JOIN schuppenanzahl a ON s.id = a.parentID WHERE Datum = (SELECT MAX(datum) FROM schuppenanzahl WHERE parentID = s.id) AND s.artikel LIKE 'Kar%' Vielen Dank. :thumb: |
Re: Access Group by
:wall: Ich weiß schon, wieso ich Access meide wie der Teufel das Weihwasser.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 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-2025 by Thomas Breitkreuz