Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [MySQL] Zwei Unterschiedliche Abfragen in ein Query (https://www.delphipraxis.net/54248-%5Bmysql%5D-zwei-unterschiedliche-abfragen-ein-query.html)

faux 30. Sep 2005 14:47


[MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Hallo!

Wie kann ich denn in MySQL zwei SELECT's in eine zusammenfassen?
Bsp:

Tabelle hat spalte name (varchar), rang (int) und datum (int):
Code:
+--------+------+------------+
| Name  | Rang | Datum     |
+--------+------+------------+
| Hammer | 4    | 1104582262 |
| Messer | 5    | 1112358262 |
| Lampe | 1    | 1112705662 |
| Gabel | 3    | 1112703862 |
| Stift | 2    | 1120568062 |
+--------+------+------------+
Ich will in einem einzigen SELECT das Element mit dem höchsten Rang und mit dem höchsten Datum (also das neueste) abfragen.
Wie geht das?

Danke schon mal.
Grüße
Faux

NACHTRAG:

Das "Ergebnis" sollte so aussehen:

Code:
+---------+--------+
| Highest | Newest |
+---------+--------+
| Messer | Stift |
+---------+--------+

RavenIV 30. Sep 2005 14:53

Re: [MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Delphi-Quellcode:
SELECT * FROM tabelle WHERE (a = b) AND (b = c)

faux 30. Sep 2005 14:59

Re: [MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Danke für die Antwort, aber jetzt weiß ich genau so viel wie vorher... :?
Was ist a, b und c?

r_kerber 30. Sep 2005 15:07

Re: [MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Zitat:

Zitat von faux
Was ist a, b und c?

Mach Dir darüber keine Gedanken, so einfach geht's auf jeden Fall nicht. Ich teste gerade aber habe noch keine Lösung. Ist doch etwas aufwändiger.

Sharky 30. Sep 2005 15:15

Re: [MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Hai,

das es als eine Ergebnisszeile zurück kommt dürfte schwer sein ;-)
Aber wenn es Dir nichts ausmacht das Du einfach zwei Zeilen bekommst (die erste für den mit dem höchsten Datum und die zweite für den höchsten Rang) dann kannst Du mal das versuchen:
SQL-Code:
SELECT * 
FROM highscore
WHERE rang IN (SELECT MAX(RANG) FROM highscore)
OR datum IN (SELECT MAX(datum) FROM highscore)
ORDER BY datum
EDIT Eventuell doch nicht so schwer?
SQL-Code:
SELECT highscore.name AS Highest, highscore_temp.name AS Newest
FROM        highscore CROSS JOIN highscore highscore_temp
ORDER BY    highscore.rang DESC, highscore_temp.datum DESC
LIMIT 1
Edit - 2 nach einem Denkanstoss von r_kerber
SQL-Code:
SELECT a.name AS highest, b.name AS Newest
FROM highscore a, highscore b
WHERE a.rang= (SELECT MAX(rang) FROM highscore)
AND b.datum = (SELECT MAX(datum) FROM highscore)
Für die SUB-Querys ist mySQL >= 4.1 notwendig.

Jelly 30. Sep 2005 17:20

Re: [MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Und noch ne Variante:
SQL-Code:
select * from Liste order by Rand desc, Datum desc limit 0,1
union
select * from Liste order by Rand Datum limit 0,1
Subselects gehen erst bei MySQL ab Version 4.1. Unions immerhin schon ab 4.0

Sharky 30. Sep 2005 17:45

Re: [MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Hai Jelly,

bei deiner Variante bekomme ich einen Fehler.
Zitat:

[localhost]FEHLER 1221: Incorrect usage of UNION and ORDER BY

Jelly 30. Sep 2005 18:24

Re: [MySQL] Zwei Unterschiedliche Abfragen in ein Query
 
Zitat:

Zitat von Sharky
bei deiner Variante bekomme ich einen Fehler.
Zitat:

[localhost]FEHLER 1221: Incorrect usage of UNION and ORDER BY

Ich Dusel, der Order by Teil darf nur hinter den beiden Selects kommen.... Somit ist mein Lösungsvorschlag zu verwerfen


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 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