WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   SQL Probleme (http://www.wcm.at/forum/showthread.php?t=147938)

JoergStueger 18.10.2004 22:42

SQL Probleme
 
Hallo zusammen!

Ich hab ein verdammt beschissenes SQl Problem:

Gegeben sind 2 Tabellen. In der ersten Tabelle stehen meine PKeys.

Nr1
Nr2
Nr3
Nr4
etc.

In der 2. Tabelle stehen folgende Werte:

Nr1 Lebensgefährte
Nr1 Kind1
Nr1 Kind2
Nr2 Lebensgefährte
Nr2 Kind1
Nr2 Kind2
Nr2 Kind3
etc

Ich muß das ganze wie folgt darstellen:

Nr1 Lebensgefährte Kind1 Kind2
Nr2 Lebensgefährte Kind1 Kind2 Kind3


Wie könnte ich das eventuell lösen? Mit ner Kreuztabelle?

Bitte um dringende Hilfe!!!!!


LG
Joerg

Potassium 18.10.2004 22:48

meinst du die abfrage?
Code:

"SELECT ErsteTab.*, zweiteTab.* FROM tab1 ErsteTab, tab2 zweiteTab WHERE ErsteTab.ID = '".$ID."' AND ErsteTab.ID = ZweiteTab.ID"

JoergStueger 18.10.2004 23:01

Kann das jetzt nicht ganz nachvollziehen.

Die erste Tabelle VwPeNm, der PK ist VwPeNm.sItPeNr.
In der zweiten Tabelle hab ich Beziehungen_Person.Intern_Personen welche auf den PK verknüpft. Die 2. Spalte die ich brauch ist Beziehungen_Person.Intern_Personenbeziehung.

In der 2. Tabelle können die Einträge mehrfach vorhanden sein.
Die will ich aber nicht vertikal sondern horizontal darstellen.

Meinetwegen auch in ner neue Tabelle.

Hoffe ich konnte mich ordentlich artikulieren ...

LG
Joerg

Potassium 18.10.2004 23:07

ähm willst du das in access machen?
weil falls du es in php machen willst sehe ich das problem nicht.

JoergStueger 18.10.2004 23:09

nö, direkt im iSQL der Sybase DB ...

rem996 19.10.2004 00:53

müsste schon gehen wenn du das ergebnis der abfrage aus tabelle zwei durchläufst und die werte aneinander hängst...
weiss aber nicht ob das in deiner umgebung überhaupt geht

lg
rem996

JoergStueger 19.10.2004 08:35

nur wie mach ich das? hab keine ahnung wie das syntaktisch zu lösen ist ....


LG
Joerg

JoergStueger 19.10.2004 10:56

keiner da der helfen kann?

sagi 19.10.2004 12:41

SELECT a.spalte2, b.spalte2, c.spalte2 FROM tabelle2 a, tabelle2 b, tabelle2 c WHERE a.nr = b.nr AND a.nr = c.nr AND a.spalte2 <> b.spalte2 AND b.spalte2 <> c.spalte2 AND a.spalte2 <> c.spalte2;

Vermutlich wird diese SQL Abfrage nicht funktionieren, aber sie ist vielleicht ein Ansatz?

mfg
c.

JoergStueger 19.10.2004 14:29

Zitat:

Original geschrieben von sagi

Vermutlich wird diese SQL Abfrage nicht funktionieren, aber sie ist vielleicht ein Ansatz?

Da hast recht ...
Auch den Ansatz kann ich im Moment noch nicht erkennen ... :mad:

Mir scheint ich muss das tatsächlich in ner SP lösen, nur fehlt mir da ebenfalls erstmal der Plan ...

LG
Joerg

JackLemon 19.10.2004 14:29

die kreuztabelle war schon der richtige ansatz, nur gibt's da die verschiedensten syntax... such mal nach "PIVOT TABLE" und SYBASE, eventuell auch TRANSFORM...

JoergStueger 19.10.2004 15:13

Zitat:

Original geschrieben von JackLemon
die kreuztabelle war schon der richtige ansatz, nur gibt's da die verschiedensten syntax... such mal nach "PIVOT TABLE" und SYBASE, eventuell auch TRANSFORM...
Find leider nix dazu ...

Mal weiter googlen, auf jeden Fall danke

LG
Joerg

JoergStueger 19.10.2004 16:50

Zur Veranschaulichung!!!!

So siehts aus ...

Von der ersten Tabelle brauch ich nur den PK darum schaut meine Abfrage so
aus:

Select sItPeNr from VwPeNm where etc ....

Ergebnis:

sItPeNr(PK)|
------------
MK00082219 |
MK00082220 |
MK00082229 |
. |
. |
. |
. |

In der zweiten Tabelle gibt's 2 Spalten die Mich interessieren:

Select Intern_Person, Intern_Personenbeziehung from Beziehungen_Person

Ergebnis:

Intern_Person | Intern_Personenbeziehung
-----------------------------------------
MK00082219 | MK00234565
MK00082219 | MK01234234
MK00082219 | MK00342144
MK00082220 | MK00000123
MK00082220 | MK00004526
MK00082220 | MK00234545
. | .

Anzeigen möchte ich aber in Verbindung mit Tabelle 1

sItPeNr | Intern_Personenbeziehung(Array)
--------------------------------------------
MK00082219 | MK00234565 MK01234234 MK00342144
MK00082220 | MK00000123 MK00004526 MK00234545


Vielleicht besser ersichtlich was ich meine ...

LG
Joerg

rem996 20.10.2004 13:16

ich glaube nicht dass man dieses problem nur über sql lösen kann, weil du z.b. auch innerhalb des sql-statements nicht weisst wieviel werte aus der 2ten tabelle dann zu einem pk aus der ersten tabelle zurückkommen... (hab ich das richtig kapiert?)

ich weiss nicht was du auf deiner db für mögichkeiten hast, ich würde es wahrscheinlich über pl/sql machen und das result nacher in eine extra table schreiben


1. alle pk's in tabelle 1 durchlaufen
2. zu jedem pk die werte aus der table 2 holen (in pl/sql bsp als cursor)
3. über den cursor iterieren
4. die einzelnen werte auslesen und über eine string variable aneinander-hängen
5. das ergebnis, also den pk und die string-variable über einen insert in einen temp-table schreiben.

weiss nicht ob dir das was nützt, falls nicht sorry aber mir fällt dazu auch nix anderes mehr ein.
vielleicht kann man das auch ohne temp-table bis zur darstellung bringen, dazu müsste ich mir das ganze schon etwas genauer ansehen..

lg
rem996

JoergStueger 20.10.2004 16:35

Danke für alle Beiträge!

Habs jetzt extern über VBScript gelöst!

LG
Joerg


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag