Kombinatorik ?

Kombinatorik ?

am 01.08.2006 19:39:56 von SailDoc

Hallo Experten,

mit folgdendem Problem komme ich nicht wirklich weiter:

Ich habe eine Tabelle, in der IDs gespeichert sind. Nun muss eine
weitere Tabelle gefüllt werden. In dieser Tabelle soll genau einmal
jede mögliche Kombination der IDs gespeichert werden:

1 Tabelle:
ID AID
1 101
2 102
3 103
4 104
...

2 Tabelle
ID AID1 AID2
1 101 101
2 101 102
3 101 103
4 101 104
5 102 102
6 102 103
7 102 104
....

Hat jemand ein Code-Schnipsel für mich, wie ich das mit einer SQL
Abfrage (MySQL-Datenbank) lösen kann oder muss man das in php
programmieren?

Bin für jede Hilfe sehr dankbar.
MfG Olaf

Re: Kombinatorik ?

am 01.08.2006 19:55:28 von ascii158

olaf schrieb:
> mit folgdendem Problem komme ich nicht wirklich weiter:

Sollte eigentlich nicht sein. Ist ein ziemliches Standardproblem. Das
steht sicher irgendwo in der Doku. Stichwort: JOIN (du willst Daten
"verbinden").

> Ich habe eine Tabelle, in der IDs gespeichert sind. Nun muss eine
> weitere Tabelle gefüllt werden. In dieser Tabelle soll genau einmal
> jede mögliche Kombination der IDs gespeichert werden:
>
> [...]
>
> Hat jemand ein Code-Schnipsel für mich, wie ich das mit einer SQL
> Abfrage (MySQL-Datenbank) lösen kann oder muss man das in php
> programmieren?

SELECT a.id, b.id FROM tabelle AS a CROSS JOIN tabelle AS b;

RTFM + Grüße,
--
Philipp Tölke
PGP: 0x96A1FE7A

Re: Kombinatorik ?

am 01.08.2006 20:29:37 von SailDoc

Hi Philipp,

danke für die Antwort.

Philipp Tölke wrote:
> olaf schrieb:
> > mit folgdendem Problem komme ich nicht wirklich weiter:
>
> Sollte eigentlich nicht sein. Ist ein ziemliches Standardproblem. Das
> steht sicher irgendwo in der Doku. Stichwort: JOIN (du willst Daten
> "verbinden").
>
> > Ich habe eine Tabelle, in der IDs gespeichert sind. Nun muss eine
> > weitere Tabelle gefüllt werden. In dieser Tabelle soll genau einmal
> > jede mögliche Kombination der IDs gespeichert werden:
> >
> > [...]
> >
> > Hat jemand ein Code-Schnipsel für mich, wie ich das mit einer SQL
> > Abfrage (MySQL-Datenbank) lösen kann oder muss man das in php
> > programmieren?
>
> SELECT a.id, b.id FROM tabelle AS a CROSS JOIN tabelle AS b;

Hm, vielleicht habe ich das falsch ausgedrückt. Ich möchte nicht
JOINnen, ich lese nur aus Tabelle 1 aus, muss die ausgelesenen IDs so
kombinieren, dass ich Wertepaare bekomme und diese neuen Kombinationen
dann in die Tabelle 2 einlesen kann.


> RTFM + Grüße,
> --=20
> Philipp Tölke
> PGP: 0x96A1FE7A

Re: Kombinatorik ?

am 01.08.2006 20:44:29 von ascii158

Hi Olaf,

du könntest mal deinen ganzen Namen eintragen "Olaf Haupt"(?), da viele
auf Namen ohne Leerstelle negativ scoren.

olaf schrieb:
> danke für die Antwort.

Bitte.

> Philipp Tölke wrote:
>> olaf schrieb:
>>> Ich habe eine Tabelle, in der IDs gespeichert sind. Nun muss eine
>>> weitere Tabelle gefüllt werden. In dieser Tabelle soll genau einmal
>>> jede mögliche Kombination der IDs gespeichert werden:
>>>
>>> [...]
>>>
>>> Hat jemand ein Code-Schnipsel für mich, wie ich das mit einer SQL
>>> Abfrage (MySQL-Datenbank) lösen kann oder muss man das in php
>>> programmieren?
>>
>> SELECT a.id, b.id FROM tabelle AS a CROSS JOIN tabelle AS b;
>
> Hm, vielleicht habe ich das falsch ausgedrückt. Ich möchte nicht
> JOINnen, ich lese nur aus Tabelle 1 aus, muss die ausgelesenen IDs so
> kombinieren, dass ich Wertepaare bekomme und diese neuen Kombinationen
> dann in die Tabelle 2 einlesen kann.

Hm, lass mich raten, du hast mein Statement nicht ausprobiert? Das tut
nämlich das, was ich glaube, das du willst.

Grüße,
--
Philipp Tölke
PGP: 0x96A1FE7A

Re: Kombinatorik ?

am 01.08.2006 21:14:22 von SailDoc

Philipp,

ja, der Name stimmt ... das Statement gibt aber leider alle
Kombinationen aus, es unterscheidet also zwischen "rechts" und "links".


Beispiel: 1020 - 2130 aber auch 2130 -1020

Das bedeutet, diese Paarung ist doppelt, was ich aber vermeiden
wollte...Es darf nur jedes Paar einmal erscheinen, egal ob von rechts
oder von links gelesen.

Gruß Olaf Haupt


Philipp Tölke wrote:
> Hi Olaf,
>
> du könntest mal deinen ganzen Namen eintragen "Olaf Haupt"(?), da viele
> auf Namen ohne Leerstelle negativ scoren.
>
> olaf schrieb:
> > danke für die Antwort.
>
> Bitte.
>
> > Philipp Tölke wrote:
> >> olaf schrieb:
> >>> Ich habe eine Tabelle, in der IDs gespeichert sind. Nun muss eine
> >>> weitere Tabelle gefüllt werden. In dieser Tabelle soll genau einmal
> >>> jede mögliche Kombination der IDs gespeichert werden:
> >>>
> >>> [...]
> >>>
> >>> Hat jemand ein Code-Schnipsel für mich, wie ich das mit einer SQL
> >>> Abfrage (MySQL-Datenbank) lösen kann oder muss man das in php
> >>> programmieren?
> >>
> >> SELECT a.id, b.id FROM tabelle AS a CROSS JOIN tabelle AS b;
> >
> > Hm, vielleicht habe ich das falsch ausgedrückt. Ich möchte nicht
> > JOINnen, ich lese nur aus Tabelle 1 aus, muss die ausgelesenen IDs so
> > kombinieren, dass ich Wertepaare bekomme und diese neuen Kombinationen
> > dann in die Tabelle 2 einlesen kann.
>
> Hm, lass mich raten, du hast mein Statement nicht ausprobiert? Das tut
> nämlich das, was ich glaube, das du willst.
>=20
> Grüße,
> --=20
> Philipp Tölke
> PGP: 0x96A1FE7A

Re: Kombinatorik ?

am 01.08.2006 21:18:47 von ascii158

Olaf,

olaf schrieb:
> ja, der Name stimmt ...

Aha. Warum steht der dann noch nicht im Header?

> das Statement gibt aber leider alle
> Kombinationen aus, es unterscheidet also zwischen "rechts" und "links".
>
> Beispiel: 1020 - 2130 aber auch 2130 -1020
>
> Das bedeutet, diese Paarung ist doppelt, was ich aber vermeiden
> wollte...Es darf nur jedes Paar einmal erscheinen, egal ob von rechts
> oder von links gelesen.

Häng ein "WHERE a.id <= b.id" an. Und lies http://learn.to/quote. Und
die MySQL-Doku. Und so.

[Fullquote entsorgt]

Grüße,
--
Philipp Tölke
PGP: 0x96A1FE7A