Forum Doku Wiki Blog

Forumsarchiv 2009, Januar
Tabelle auslesen

archivierte Beiträge lesen

  1. (DATENBANK) Tabelle auslesen von gerald, 28. 01. 2009, 21:04

Tabelle auslesen

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

Tabelle auslesen

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 :-)

Tabelle auslesen

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

Tabelle auslesen

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'
> ...
>

>

Tabelle auslesen

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