![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: ohne Komponenten
Sortierung
Hallo Zusammen,
ich habe in meinem MySQL Server eine Tabelle, in der werden die Kommentare zu einem Artikel geschrieben. Die Tabelle enthält folgende Spalten: ID, Datum: DATETIME, Verfasser: VARCHAR, ArtikelNr: INTEGER, Kommentar: VARCHAR. Jetzt kann es zu einem Artikel mehrere Kommentare geben. Ich brauche eine Abfrage, die mir für jeden Artikel den jüngsten (neuste Datum) Kommenatr ausgibt. Ich möchte nicht für jeden Artikel eine Liste haben, sondern nur eine aller Artikel mit den jeweils jüngsten Kommentaren. Ich bekomme das irgendwie nicht hin und hoofe, dass mir hier jemand helfen kann... Vielen Dank Ykcim |
AW: Sortierung
Gruppiere die Datensätze (
SQL-Code:
)
...group by ...
|
AW: Sortierung
Oder vielleicht so (ungetestet):
SQL-Code:
SELECT
Datum, Verfasser, ArtikelNr, Kommentar FROM Tabelle A WHERE Datum = ( SELECT MAX(Datum) FROM Tabelle B WHERE B.ArtikelNr = A.ArtikelNr) |
AW: Sortierung
Das habe ich so versucht:
SQL-Code:
Aber dann bekomme ich nicht die Kommenatre mit dem jüngsten Datum, sondern die Kommentare, die zuerst in der Liste stehen - egal welches Datum sie haben...
select Datum, ArtikelNr, Kommentar from kommentterminv
group by ArtikelNr order by Datum desc Ich habe nur eine Tabelle...? |
AW: Sortierung
Mich wundert, dass es so funktioniert, da ja 2 Felder weder als Aggegat noch als Teil der Gruppierungsbedingung vorliegen
|
AW: Sortierung
Wie würdet Ihr das denn machen?
Stelle Euch vor, Ihr wollt immer nur die letzten Meinungen der Kunden zu Euren Artikeln sehen. Wie würdet Ihr das machen? Von funktionieren kann hier noch keine Rede sein ;-) |
AW: Sortierung
Hast Du #3 einmal versucht?
|
AW: Sortierung
Hi,
vielleicht habe ich jetzt was übersehen, aber sollte nicht ein "einfaches"
Code:
Wenn's dann fürn bestimmten Artikel sein soll einfach ein entsprechendes "where" ergänzen.
Select xyz from Tablename order by ArtikelNr desc, Datum desc
Greetz Data |
AW: Sortierung
Liste der Anhänge anzeigen (Anzahl: 2)
Was bedeutet #3??? :cyclops:
Ich habe zur Veranschaulichung die Tabelle und das gewünschte Abfrageergebnis als Dati angehängt... Vielen Dank für Eure Mühen! Ykcim |
AW: Sortierung
@DataCool: Damit bekommst Du aber wieder alle DS zur ArtikelNr, er will ja nur die neuesten.
[edit] @Ykcim: #3 bedeutet ![]() |
AW: Sortierung
@Detlef:
DAnn um Select Top 1 from ..... Greetz |
AW: Sortierung
Zitat:
|
AW: Sortierung
Zitat:
|
AW: Sortierung
@ DataCool
Bei der Version bekomme ich alle Kommentare. Ich brauche aber ein Ergebnis, bei dem ich für jeden Artikel nur ein Kommentar bekomme (nämlich den jüngsten). Ykcim |
AW: Sortierung
Nun sag mir doch mal, ob Du meinen Vorschlag ausprobiert hast und ob da irgendwelche Fehlermeldungen kommen.
|
AW: Sortierung
Musste mich gerade erst zurechtfinden...
Ich habe Deinen Vorschlag leider nicht ganz verstanden, da ich ja nur eine Tabelle habe. Sollen Tabelle A und B die gleichen sein? |
AW: Sortierung
Ja, deshalb ja die 2 Aliase. Du musst nur "Tabelle" durch den echten Tabellennamen ersetzen.
|
AW: Sortierung
Zitat:
|
AW: Sortierung
Ich habe es gerade einfach ausprobiert - bevor ich Deinen letzten Beitrag gelesen hatte...
ES KLAPPT
SQL-Code:
Das brachte das gewünschte Ergebnis ein.
SELECT
Datum, Verfasser, ArtikelNr, Kommentar FROM kommentterminV WHERE Datum = ( SELECT MAX(Datum) FROM kommentterminV WHERE kommentterminV.ArtikelNr = kommentterminV.ArtikelNr) Vielen Dank!!! Ykcim |
AW: Sortierung
ok, jetzt habe ich verstanden was gesucht wird ...
Wer lesen kann ist klar im Vorteil:roll: Sollte ein :
Code:
nicht zum gewünschten Ergebnis führen ?
Select xyz from Tablename group by ArtikelNr order by ArtikelNr desc, Datum desc
Ansonsten musst Du wohl wirklich auf ineinander verkettete Abfragen zurück greifen. Gruß Data |
AW: Sortierung
Das klappt ohne die Aliase? Das wundert mich jetzt aber schon ein wenig, aber gut.
|
AW: Sortierung
@ DataCool
Das hatte ich schon versucht, aber das funktionierte auch nicht. Ich habe die andere Lösung gerade in mein Programm eingebaut und sie funzt!!! @ All Noch einmal vielen Dank für die tolle Kommunikation und Hilfe! :-D Ykcim |
AW: Sortierung
Zu früh gefreut...
Guten Morgen, nach der anfänglichen Freude, dass der nachstehende Code funktioniert, muss ich heute leider ernüchtert feststellen, dass dme nicht so ist. Hier ersteinmal der Code:
SQL-Code:
Das Problem ist, dass ich nur die Kommentare über alle Artikel bekomme, die das jüngste Datum haben. Das heißt, wenn es zu 10 Artikel einen "neusten" Kommentar vom 27.06.2010 gibt und von einem elften Artikel einen Kommentar neusten Kommentar vom 28.06.2010 gibt, dann wir mir nur der Kommentar der vom 28.06.2010 angezeigt und die anderen Kommentare bleiben unberücksichtigt...
SELECT
Datum, Verfasser, ArtikelNr, Kommentar FROM kommentterminV WHERE Datum = ( SELECT MAX(Datum) FROM kommentterminV WHERE kommentterminV.ArtikelNr = kommentterminV.ArtikelNr) Kann mir jemand sagen, was ich an dem Code verändern muss. Vielen Dank Ykcim |
AW: Sortierung
probier mal
SQL-Code:
das sollte klappen...
SELECT
A.Datum, A.Verfasser, A.ArtikelNr, A.Kommentar FROM kommentterminV A WHERE Datum = ( SELECT MAX(B.Datum) FROM kommentterminV B. WHERE A.ArtikelNr = B.ArtikelNr) |
AW: Sortierung
Hallo,
Danke für die Antwort, das bringt mir das gleiche Ergebnis. Ich habe auch nicht erkannt, wo der Unterschied liegt und habe es deshlab einfach rauskopiert und ausprobiert - aber das Ergebnis ist das gleiche... es werden nur die Kommentare mit dem neusten Datum überhaupt angezeigt, und die Kommentare von anderen Artikeln, deren neustes Datum älter ist, bleiben unberücksichtigt... Ykcim |
AW: Sortierung
Das kann ich hier nicht nachvollziehen (MySQL 5.1.41). Welchen Typ hat denn Datum? Obwohl das eigentlich egal sein müsste.
|
AW: Sortierung
Liste der Anhänge anzeigen (Anzahl: 2)
Das Datum hat das Forma DateTime
Ich habe es jetzt in zwei Abfragen gelöst, die ich in meinem Programm dann zusammengebracht habe...
SQL-Code:
Hier wird das richtige Datum und zur richtigen ArtikelNr herangezogen. Kommentar und Verfasser sind jedoch falsch, da sie von dem ersten Kommentar stammen.
SELECT
max(Datum), Verfasser, ArtikelNr, Kommentar FROM kommentterminV group by ArtikelNr order by datum DESC
SQL-Code:
Hier habe ich alle Kommentare. Aus der Kombination Datum und ArtikelNr kann ich in meinem Programm den entsprechenden Kommentar rausholen.
SELECT
Datum, Verfasser, ArtikelNr, Kommentar FROM kommentterminV Wenn es eine elegantere Lösung gibt, bin ich dafür immer zu haben. Schön ist nämlich was anderes... Ich habe noch einmal zwei Bilder mitgeschickt. In dem ersten wird die komplette Tabelle dargestellt und ich habe die gewünschten Ergebnisse rot markiert. In dem zweiten Bild findet Ihr das Ergebnis des in #23 geposteten Code. Ykcim |
AW: Sortierung
Und wie sieht das Ergebnis der Abfrage aus #3 mit den beiden Aliasen aus?
|
AW: Sortierung
Sorry, aber ich verstehe Deine Frage nicht.
Ist das nicht das gleiche? Das ist Dein Code aus #3:
SQL-Code:
Da ich nur eine Tabelle habe, habe ich der Tabelle A und der Tabelle B meinen Tabellennamen KommentterminV gegeben.
SELECT
Datum, Verfasser, ArtikelNr, Kommentar FROM Tabelle A WHERE Datum = ( SELECT MAX(Datum) FROM Tabelle B WHERE B.ArtikelNr = A.ArtikelNr)
SQL-Code:
Das Ergbnis ist das, was ich vorher eingestellt habe (IST-Ergebnis)
SELECT
Datum, Verfasser, ArtikelNr, Kommentar FROM kommentterminV WHERE Datum = ( SELECT MAX(Datum) FROM kommentterminV WHERE kommentterminV.ArtikelNr = kommentterminV.ArtikelNr) Habe ich das falsch verstanden? Ykcim |
AW: Sortierung
Du brauchst für den Vergleich 2 Instanzen derselben Tabelle, deshalb die Aliase. Versuch es doch einfach mal.
|
AW: Sortierung
SQL-Code:
SELECT
Datum, Verfasser, ArtikelNr, Kommentar FROM kommentterminV A WHERE Datum = ( SELECT MAX(Datum) FROM kommentterminV B WHERE A.ArtikelNr = B.ArtikelNr) |
AW: Sortierung
Damit hast Du
![]() |
AW: Sortierung
Würde ich ja gerne...
..aber ich weiß leider nicht wie das gehen soll... :oops: Ich habe so noch nicht gearbeitet. Wie baue ich zwei Instanzen auf und wie greife ich von einer auf die andere zu? |
AW: Sortierung
Du musst doch nur den SQL-Code aus #31 kopieren. Ist das so schwer?
|
AW: Sortierung
Code:
Nicht ganz wörtlich - ich glaube, er hat möglicherweise nicht verstanden, dass in "Tabelle A" Tabelle sein Tabellenname und A der Alias ist, deshalb habe ich das ganze mit seinem richtigen Tabellennamen wiederholt.
Damit hast Du #3 wörtlich zitiert
|
AW: Sortierung
Stimmt, ich hätte vielleicht <Tabellenname> schreiben sollen.
|
AW: Sortierung
Liste der Anhänge anzeigen (Anzahl: 1)
Nunja, wenn man bis heute nicht verstanden hat, dass das einfache hinzufügen von einem A oder B gleichbedeutend ist mit zwei Instanzen, dann, JA!
Ich dachte, dass das A und B zur Erklärung dienen sollte und mich die ganze Zeit gefragt, was Du mit Alias gemeint hattest... Jetzt weiß ich es! DAS ERGEBNIS IST KLASSE! Genauso wollte ich es haben! Vielen Dank für die Hilfe und Geduld ;-) Gruß Ykcim |
AW: Sortierung
Na, jetzt weißt Du es ja fürs nächste Mal :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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-2025 by Thomas Breitkreuz