Kartesisches Produkt?

Kartesisches Produkt?

am 23.08.2006 14:19:11 von Hityper

Hallo, ich habe 2 verschiedene Tabellen die ich gerne als ERgebnis
ausgeben will.

################
Tabelle1
################
id_tab1| hersteller | typ
1 | Belinea | 17 Zoll
2 | Eizo | 19 Zoll
3 | Nec | 15 Zoll

################
Tabelle2
################
id_tab2|text1 | text2
1 | gut | sehr gut
3 | sehr gut | mangelhaft

################
Ergebnis soll sein
################
id_tab1 | id_tab2| hersteller|text1
1 | | Belinea
|3 | | sehr gut

Also alle Überschriften und Daten in einer Tabelle?
Ist das dann ein kartesiches Produkt?

Re: Kartesisches Produkt?

am 23.08.2006 15:38:31 von Johannes Vogel

Hi Unbekannter

Vorerst: Du machst da einiges falsch.
- Du solltest deinen Realnamen als Absender angeben.
- Du solltest das Manual zur Hilfe nehmen bzw. ein Einsteiger-Buch,
welches dir essenzielle erste Schritte in SQL erklärt.
http://dev.mysql.com/doc/
- Du solltest eine fixe Zeichenbreite verwenden beim posten, so dass
Text-Formatierungen auch sauber rüberkommen.

Aber dessen mal ungeachtet, hier eine mögliche Hilfestellung:

Hityper wrote:
> Hallo, ich habe 2 verschiedene Tabellen die ich gerne als ERgebnis
> ausgeben will.
[...]
> Also alle Überschriften und Daten in einer Tabelle?
> Ist das dann ein kartesiches Produkt?

Ein kartesisches Produkt heisst: Nimm aus Tabelle A alles Datensätze und
verwende sie mit jedem Datensatz aus Tabelle B. Also
A1/B1, A1/B2, A1/B3, ...
A2/B1, A2/B2, A2/B3, ...
:

Du möchtest aber irgendwie irgend etwas völlig anderes. Nur habe ich
keine Ahnung, was du genau möchtest. Vielleicht erklärst du einfach, was
du machen willst.

Meine Kristallkugel meint folgendes: Du hast eine DB mit Bildschirmen.
Jetzt hast du verschiedene Hersteller, Typen und Zustände.

Hersteller: _id_, name
Typen: _id_, groesse
Zustaende: _id_, zustand
Bildschirme: _id_, idHersteller, idTypen, idZustaende, standort

und die Liste erhältst du über
select b.id, b.standort, h.name, t.groesse, z.zustand
from Bildschirme as b
join Hersteller as h on b.idHersteller = h.id
join Typen as t on b.idTypen = t.id
join Zustaende as z on b.idZustaende = z.id
order by h.name asc, t.groesse asc, z.zustand asc;

Und um vorausschauend zu vermeiden. Bitte kein TOFU bei der Antwort.
http://learn.to/quote

HTH, Johannes

Re: Kartesisches Produkt?

am 23.08.2006 16:38:15 von Hityper

Was ich genau möchte ist 2 Tabelleninhalte mit unterschiedlichen
Feldern ausgeben.
Dh. ich habe z.B. eine Tabelle mit Herstellern (tab1) und 1 Tabelle
mit Produkten (tab2)

Nun möchte ich die Tabellen so verbinden, dass ich die fogende Tabelle
erhalte

id_hersteller| name_hersteller |model |Preis
3 | Grundig | W32T3 | Zeile
aus Tab1
3 | | |400
Zeile aus Tab2
usw.

und nicht
3 | Grundig | W32T3 |400
Verbindung von Tab1 und Tab2
Zeile aus Tab2

Gruß
Wolfgang
> Hityper wrote:
> > Hallo, ich habe 2 verschiedene Tabellen die ich gerne als ERgebnis
> > ausgeben will.
> [...]
> > Also alle Überschriften und Daten in einer Tabelle?
> > Ist das dann ein kartesiches Produkt?
>
> Ein kartesisches Produkt heisst: Nimm aus Tabelle A alles Datensätze und
> verwende sie mit jedem Datensatz aus Tabelle B. Also
> A1/B1, A1/B2, A1/B3, ...
> A2/B1, A2/B2, A2/B3, ...
> :
>
> Du möchtest aber irgendwie irgend etwas völlig anderes. Nur habe ich
> keine Ahnung, was du genau möchtest. Vielleicht erklärst du einfach, =
was
> du machen willst.
>
> Meine Kristallkugel meint folgendes: Du hast eine DB mit Bildschirmen.
> Jetzt hast du verschiedene Hersteller, Typen und Zustände.
>
> Hersteller: _id_, name
> Typen: _id_, groesse
> Zustaende: _id_, zustand
> Bildschirme: _id_, idHersteller, idTypen, idZustaende, standort
>
> und die Liste erhältst du über
> select b.id, b.standort, h.name, t.groesse, z.zustand
> from Bildschirme as b
> join Hersteller as h on b.idHersteller =3D h.id
> join Typen as t on b.idTypen =3D t.id
> join Zustaende as z on b.idZustaende =3D z.id
> order by h.name asc, t.groesse asc, z.zustand asc;
>
> Und um vorausschauend zu vermeiden. Bitte kein TOFU bei der Antwort.
> http://learn.to/quote
>
> HTH, Johannes


Was ich genau möchte ist 2 Tabelleninhalte mit unterschiedlichen
Feldern ausgeben.
Dh. ich habe z.B. eine Tabelle mit Herstellern (tab1) und 1 Tabelle
mit Produkten (tab2)

Nun möchte ich die Tabellen so verbinden, dass ich die fogende Tabelle
erhalte

id_hersteller| name_hersteller |model |Preis
3 | Grundig | W32T3 | Zeile
aus Tab1
3 | | |400
Zeile aus Tab2
usw.

und nicht
3 | Grundig | W32T3 |400
Verbindung von Tab1 und Tab2
Zeile aus Tab2

Re: Kartesisches Produkt?

am 23.08.2006 16:51:29 von Christian Kirsch

Wolfgang Burger schrieb:
> Was ich genau möchte

Du möchtest auf jeden Fall auch http://learn.to/quote lesen und
beherzigen. Vielleicht bist Du ja einer der wenigen, die beim Lesen
von News auf dem Kopf stehen - die meisten hier sitzen ganz normal vor
ihrem Rechner. Und in dieser Haltung ist es ausgesprochen schwierig,
den Zusammenhang von Threads zu verstehen, wenn die Antwort VOR der
Frage kommt.

Rückwärts nicht auch doch Du redest Leben wirklichen Im?

> ist 2 Tabelleninhalte mit unterschiedlichen
> Feldern ausgeben.
> D.h. ich habe z.B. eine Tabelle mit Herstellern (tab1) und 1 Tabelle
> mit Produkten (tab2)
>
> Nun möchte ich die Tabellen so verbinden, dass ich die fogende Tabelle
> erhalte
>
> id_hersteller| name_hersteller |model |Preis
> 3 | Grundig | W32T3 |
> Zeile aus Tab1
> 3 | | |400
> Zeile aus Tab2
> usw.
>
> und nicht
> 3 | Grundig | W32T3 |400
> Verbindung von Tab1 und Tab2
> Zeile aus Tab2
>

Wozu? Wenn das Dein Problem ist, dann löse es in der Applikation. Ob
die Daten in einer oder in zwei Zeilen erscheinen, ist wirklich kein
SQL-Problem.