Der folgende Beitrag wurde am 28. 01. 2009, 21:04 Uhr von gerald veröffentlicht.
Hallo,
ich möchte gerne über _eine_ query Einträge aus meiner Tabelle lesen in dieser Reihenfolge
Erst kommen die Einträge mit...
1. alle top!=0 AND color=0 und status=expert
2. alle top=0 AND color!=0 und status=expert
3. alle top=0 AND color=0 und status=expert
4. alle status=basic
Tabelle:
id | top | color | type (basic, expert)
1 | 1 | 0 | expert
2 | 2 | 0 | expert
3 | 3 | 0 | expert
4 | 2 | 0 | expert
5 | 0 | 0 | basic
5 | 0 | 1 | expert
6 | 0 | 0 | basic
7 | 0 | 2 | expert
8 | 0 | 0 | expert
9 | 0 | 1 | expert
10 | 0 | 3 | expert
11 | 0 | 2 | expert
12 | 0 | 0 | basic
13 | 0 | 1 | expert
Wie sieht die Query dazu aus?
Danke für die Hilfe,
Gerald
Der folgende Beitrag wurde am 28. 01. 2009, 21:11 Uhr von Vinzenz Mai veröffentlicht.
Hallo,
> ich möchte gerne über _eine_ query Einträge aus meiner Tabelle lesen in dieser Reihenfolge
> 1. alle top!=0 AND color=0 und status=expert
> 2. alle top=0 AND color!=0 und status=expert
> 3. alle top=0 AND color=0 und status=expert
> 4. alle status=basic
UNION kann Dir helfen. Steht auf allen mir bekannten DBMS in den Versionen, die man heute noch nutzen sollte [1], zur Verfügung.
Freundliche Grüße
Vinzenz
[1] MySQL 3.x sollte man definitiv nicht mehr nutzen :-)
Der folgende Beitrag wurde am 28. 01. 2009, 21:13 Uhr von Rouven veröffentlicht.
Hello,
> Erst kommen die Einträge mit...
> 1. alle top!=0 AND color=0 und status=expert
> 2. alle top=0 AND color!=0 und status=expert
> 3. alle top=0 AND color=0 und status=expert
> 4. alle status=basic
da gibt es (mindestens) zwei Möglichkeiten:
(1) UNION (ALL)
SELECT id, top, color, type FROM tabelle WHERE top!=0 AND color=0 AND status='expert'
UNION ALL
SELECT id, top, color, type FROM tabelle WHERE top=0 AND color!=0 AND status = 'expert'
...
(2) künstliches Einbringen einer Sortierspalte
SELECT id,
top,
color,
type,
CASE
WHEN (top != 0 AND color = 0 AND status='expert') THEN 1
WHEN (top=0 AND color!=0 AND status = 'expert') THEN 2
...
END AS sortierung
FROM tabelle
ORDER BY sortierung
MfG
Rouven
--
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
Ist Dir langweilig? Willst du Spaß? Willst Du Party? Ganz einfach!!! Schicke eine SMS mit dem Bestellwort "Feuer" an die 112 und innerhalb von 5 Minuten stehen 20 Männer mit lustigen Partyhüten, Sirenen und Partywagen vor deinem Haus! -- Herkunft unbekannt
Der folgende Beitrag wurde am 29. 01. 2009, 08:55 Uhr von Gerald veröffentlicht.
Hallo Rouven,
danke für Deinen Beitrag. Jetzt noch eine Verständnisfrage:
Wenn ich das mit dem UNION ALL mache, ist die Möglichkeit gegeben den Result in seiner Datenmenge zu begrenzen?
(SELECT * FROM tabelle WHERE top!=0 AND color=0 AND status='expert' ORDER BY id)
UNION ALL
(SELECT * FROM tabelle WHERE top=0 AND color!=0 AND status='expert' ORDER BY id)
UNION ALL
(SELECT * FROM tabelle WHERE top=0 AND color=0 AND status='expert' ORDER BY id)
UNION ALL
(SELECT * FROM tabelle WHERE status='basic' ORDER BY id)
Und diese Menge mit LIMIT 5,5 ausgeben?
Möchte das machen, wenn ich z.b. in einer Listenansicht eine Seitennavigation einbauen möchte.
Gruß,
Gerald
>
> (1) UNION (ALL)
>
> SELECT id, top, color, type FROM tabelle WHERE top!=0 AND color=0 AND status='expert'
> UNION ALL
> SELECT id, top, color, type FROM tabelle WHERE top=0 AND color!=0 AND status = 'expert'
> ...
>
>
Der folgende Beitrag wurde am 29. 01. 2009, 13:47 Uhr von ChrisB veröffentlicht.
Hi,
> Wenn ich das mit dem UNION ALL mache, ist die Möglichkeit gegeben den Result in seiner Datenmenge zu begrenzen?
Klar, steht im Handbuch:
http://dev.mysql.com/doc/refman/5.1/en/union.html
MfG ChrisB
--
„This is the author's opinion, not necessarily that of Starbucks.“
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4