sortierung über 2 tabellen?

sortierung über 2 tabellen?

am 23.09.2005 01:44:28 von Tim Gersken

Hi!

Kleines Problem:

Ich rufe Daten nacheinander, also mit 2 Abfragen aus 2 Tabellen ab.
Beide Tabellen haben dieselbe Struktur (gekürzte, vereinfachte Darstellung)

| id | A | B | C | D |

Nun rufe ich z. B. erst bei Tab 1 alle Einträge ab, wo A = 1 ist,
danach bei Tab 2 wo A = 1 ist.

Aber was, wenn ich das Ergebnis nach C sortieren lassen möchte?
Wenn ich dies nun mache, habe ich ja erst die Ergebnisse von Tab 1
sortiert und anschliessend die Ergebnisse von Tab 2.

Beispiel:

Tab 1:
| id | A | B | C | D |
|----|---|---|---|---|
| 1 | 1 | A | A | A |
| 2 | 1 | A | C | B |
| 3 | 1 | B | B | C |
| 4 | 2 | A | C | B |

Tab 2:
| id | A | B | C | D |
|----|---|---|---|---|
| 1 | 1 | R | L | K |
| 2 | 1 | C | C | C |
| 3 | 1 | F | A | L |
| 4 | 2 | S | B | A |


wenn ich die nun separat sortiere erhalte ich nur:

| 1 | 1 | A | A | A |
| 3 | 1 | B | B | C |
| 2 | 1 | A | C | B |

| 3 | 1 | F | A | L |
| 2 | 1 | C | C | C |
| 1 | 1 | R | L | K |

hätte aber gerne:

| 1 | 1 | A | A | A |
| 3 | 1 | F | A | L |
| 3 | 1 | B | B | C |
| 2 | 1 | A | C | B |
| 2 | 1 | C | C | C |
| 1 | 1 | R | L | K |
sortiert-------^

oder kann man diese abfrage in einer query machen?

ich hoffe ich konnte das problem klar genug darstellen.

MfG
TiGer

Re: sortierung über 2 tabellen?

am 23.09.2005 05:27:29 von Niels Braczek

Tim Gersken schrieb:

> Nun rufe ich z. B. erst bei Tab 1 alle Einträge ab, wo A = 1 ist,
> danach bei Tab 2 wo A = 1 ist.
>
> Aber was, wenn ich das Ergebnis nach C sortieren lassen möchte?
> Wenn ich dies nun mache, habe ich ja erst die Ergebnisse von Tab 1
> sortiert und anschliessend die Ergebnisse von Tab 2.

Du suchst UNION.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´

Re: sortierung über 2 tabellen?

am 23.09.2005 15:02:26 von Mourad Boulahboub

Hi,

Am 23.09.2005, 01:44 Uhr, schrieb Tim Gersken :

> Hi!
>
> Kleines Problem:
>
> Ich rufe Daten nacheinander, also mit 2 Abfragen aus 2 Tabellen ab.

wieso nicht alle beide auf einmal mit einer Abfrage!?

> Beide Tabellen haben dieselbe Struktur (gekürzte, vereinfachte
> Darstellung)
>
> | id | A | B | C | D |
>
> Nun rufe ich z. B. erst bei Tab 1 alle Einträge ab, wo A = 1 ist,
> danach bei Tab 2 wo A = 1 ist.
>
> Aber was, wenn ich das Ergebnis nach C sortieren lassen möchte?
> Wenn ich dies nun mache, habe ich ja erst die Ergebnisse von Tab 1
> sortiert und anschliessend die Ergebnisse von Tab 2.
>
> ***************
>
> oder kann man diese abfrage in einer query machen?

wie wärs vielleicht mit

SELECT * FROM tabelle1 AS a, tabelle2 AS b where a.A = 2 OR b.A = 1 ORDER
BY a.C,b.C

>
> ich hoffe ich konnte das problem klar genug darstellen.

ich hoffe das ist das was du meintest ;)

>
> MfG
> TiGer

MfG
-Mourad-

--
Erstellt mit Operas revolutionärem E-Mail-Modul: http://www.opera.com/mail/

Re: sortierung über 2 tabellen?

am 23.09.2005 15:25:14 von Tim Gersken

Niels Braczek schrieb:
> Du suchst UNION.

Kann ich später auch rauskriegen, aus welcher der beiden Tabellen der
jeweilige Eintrag stammt?

Re: sortierung über 2 tabellen?

am 23.09.2005 16:09:45 von Hartmut Holzgraefe

Tim Gersken wrote:
> Niels Braczek schrieb:
>> Du suchst UNION.
>=20
> Kann ich später auch rauskriegen, aus welcher der beiden Tabellen =
der
> jeweilige Eintrag stammt?

SELECT 'tab1' AS tabelle, t1.field1, t1.field2, ... FROM t1 WHERE ...
UNION
SELECT 'tab2' AS tabelle, t2.field1, t2.field2, ... FROM t2 WHERE ...

--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com

Re: sortierung über 2 tabellen?

am 23.09.2005 18:19:43 von Tim Gersken

Hartmut Holzgraefe schrieb:
> Tim Gersken wrote:
>
>> Niels Braczek schrieb:
>>
>>> Du suchst UNION.
>>
>>
>> Kann ich später auch rauskriegen, aus welcher der beiden Tabellen der
>> jeweilige Eintrag stammt?
>
>
> SELECT 'tab1' AS tabelle, t1.field1, t1.field2, ... FROM t1 WHERE ...
> UNION
> SELECT 'tab2' AS tabelle, t2.field1, t2.field2, ... FROM t2 WHERE ...
>
Ja schon klar, aber wenn ich das Result nun mit mysql_fetch_array
durchlaufe, wie bekomme ich zu diesem Zeitpunkt heraus, ob der Eintrag
aus tab1 oder tab2 stammt?

Re: sortierung über 2 tabellen?

am 23.09.2005 18:29:15 von Tim Gersken

Tim Gersken schrieb:
> Hartmut Holzgraefe schrieb:
>
>>Tim Gersken wrote:
>>
>>
>>>Niels Braczek schrieb:
>>>
>>>
>>>>Du suchst UNION.
>>>
>>>
>>>Kann ich später auch rauskriegen, aus welcher der beiden Tabellen der
>>>jeweilige Eintrag stammt?
>>
>>
>>SELECT 'tab1' AS tabelle, t1.field1, t1.field2, ... FROM t1 WHERE ...
>>UNION
>>SELECT 'tab2' AS tabelle, t2.field1, t2.field2, ... FROM t2 WHERE ...
>>
>
> Ja schon klar, aber wenn ich das Result nun mit mysql_fetch_array
> durchlaufe, wie bekomme ich zu diesem Zeitpunkt heraus, ob der Eintrag
> aus tab1 oder tab2 stammt?

Oops, sorry Hartmut. Hab das 'tab1' AS tabelle auf den ersten Blick
nicht gesehn und falsch gedeutet.

Danke, klappt jetzt wunderbar!