Ich versuche den Mindestpreis pro Reise zu erhalten und weiß, welche Reisedetails diesem Mindestpreis pro Reise entsprechen.Finden Sie den Mindestwert UND die korrekten Spaltenwerte
Dafür habe ich alle Arten von Variationen mit Unterabfragen, Joins usw. versucht, aber da es nicht 1 Primärschlüssel gibt, kann ich es nicht herausfinden.
Was ich versuche zu erreichen ist, die Reise mit dem niedrigsten Preis zu bekommen, und dann in der Aufzeichnung die Details der Reise mit diesem niedrigsten Preis enthalten.
SELECT travel_id, persons, days, MIN(`price`) AS `price`
FROM travel_details
WHERE 1
GROUP BY `travel_id`
HAVING MIN(price);
Einfache Version meiner Tisch Spalten, Spalten sind: travel_id
, persons
, days
, price
Diese Säulen bilden zusammen den Primärschlüssel.
Eine Reise kann für verschiedene Personen, Tage und Preise gebucht werden. Es kann auch vorkommen, dass mehrere Preisoptionen für dieselbe Kombination von travel_id
, persons
und days
vorliegen.
Z. B.
100, 2, 4, **250**
100, 2, 4, **450**
100, 2, **5**, 450
101, 2, 4, 190
101, 2, 5, 185
travel_id
Sein 100 für 2 Personen für 4 Personen.
Was möchte ich erreichen möchte, ist Rückkehr: 100, 250, und dann mit richtigen entsprechenden Werte:
100, 2, 4, 250
101, 2, 5, 185
Jetzt mischt mein Ergebnis einfach alle anderen Daten. Wenn ich diese Spalten in die Gruppe mit einbeziehe, wird sie nicht mehr nur auf travel_id
gruppiert, sondern beispielsweise auch auf persons
. Dann werden alle Kombinationen für eine travel_id
und persons
zurückgegeben.
Irgendeine Idee, wie man das angeht?
Meiner Meinung nach, haben Sie die falsche Antwort akzeptiert. Wenn die andere Antwort nicht für Sie funktioniert, deutet das eher auf einen Fehler in Ihrem Design als auf einen Fehler in dieser Lösung hin. – Strawberry
Das könnte sein, aber mit einem solchen Kommentar dann bitte definieren, was der Fehler im Design ist. Eine normale Tabelle mit 4 Spalten, die alle eindeutig als Primärschlüsselspalten definiert sein müssen. Oder eine normale Tabelle mit 5 Spalten mit 1 UID-Spalte als Primärschlüsselspalte und 4 normalen Spalten mit den Werten. Wie ist eine solche grundlegende Tabelleneinrichtung ein Konstruktionsfehler? Die Frage ist, wie man pro Reise 1 vollen und korrekten Rekord mit dem niedrigsten Preis bekommt. Wie erhält man diesen 1 Datensatz pro Reise, wenn es mehrere Optionen pro Reise mit dem gleichen - niedrigsten - Preis gibt, aber z. B. 3 Personen anstelle von 4 Personen. – PeterH
Für die "Aufnahme", bevor Sie Ihren Kommentar veröffentlicht haben, ergänzte ich die Antwort von Sagi. Mit dieser letzten "Gruppe durch" ist das Problem gelöst. Vielleicht hast du das nicht gesehen, überprüfe die Antwort unten. – PeterH