Komplexe Abfrage via 2 Tabellen

uppss

Benutzer
Beiträge
12
Hallo Liebes Forum Team,
ich komme einfach nicht weiter, ob das überhaupt möglich ist, weiß ich aber auch nicht. Ich brauch dringend HILFE.
z.B. 2. Tabelle // Wenn da eine ProdNr stimmt, zeig mir bitte 1-te, 3.,5.,7. Zeile aus der 1. Tabelle

ProdNr / Fehlerkeys 1/ Fehlerkeys 2/
123456 / 1,3,5,7 / 2,4,6,9
654321 / 3,4,,6 / 1,3

1. Tabelle:
LaufendeNr. / Irgendwelche Inhalte / irgendwelche Inhalte / ...
1
2
3
4
5
(1..5 als primary key deklariert)

Ich bedanke mich schon mal im Voraus.
Daniel
 
Werbung:
Hallo Liebes Forum Team,
ich komme einfach nicht weiter, ob das überhaupt möglich ist, weiß ich aber auch nicht. Ich brauch dringend HILFE.
z.B. 2. Tabelle // Wenn da eine ProdNr stimmt, zeig mir bitte 1-te, 3.,5.,7. Zeile aus der 1. Tabelle

ProdNr / Fehlerkeys 1/ Fehlerkeys 2/
123456 / 1,3,5,7 / 2,4,6,9
654321 / 3,4,,6 / 1,3

1. Tabelle:
LaufendeNr. / Irgendwelche Inhalte / irgendwelche Inhalte / ...
1
2
3
4
5
(1..5 als primary key deklariert)

Ich bedanke mich schon mal im Voraus.
Daniel


Verwende bitte Code-Tags und zeige bitte die Definition der Tabellen und was bei select rauskommt. Sind die Fehlerkeys jeder in einer Spalte oder ist das ein String?
Ich habe das Gefühl, das Du da massive Fehler machst. Aber das wird erst klarer, wenn Du das, was Du hast, exakt darlegst.
 
Ich habe noch keine richtige Tabellen erstellt. Das war nur ein Beispiel.
Die Frage war, ob ich einen String mit laufenden Nummern und Kommas untersuchen kann, wenn ja, dann wie.
Leider kann ich keine Tabellen hier darstellen :-(

Tabelle 2

HTML:
<table>
  <tr>
    <th>ProdNr</th>
    <th>Fehlerkeys 1</th>
    <th>Fehlerkeys 2</th>
  </tr>
  <tr>
    <td>123456</td>
    <td>1,3,5,7</td>
    <td>2,4,6,9</td>
  </tr>
  <tr>
    <td>654321</td>
    <td>3,4,6</td>
    <td>1,3</td>
  </tr>
</table>

Tabelle 1
HTML:
<table>
  <tr>
    <th>LaufendeNr</th>
    <th>Irgendwelche Inhalte</th>
    <th>Irgendwelche Inhalte</th>
  </tr>
  <tr>
    <td>1</td>
    <td>.......</td>
    <td>.......</td>
  </tr>
  <tr>
    <td>2</td>
    <td>........</td>
    <td>.........</td>
  </tr>
</table>

Und die Abfrage sollte ungefähr so lauten: zeig mir alle Zeilen aus der 1 Tabelle, wenn 1 und oder 3 im String in der 2. Tabelle vorkommen
 
Du kannst einen String wieder zerlegen, das ist aber sehr mühselig und ein massiver Verstoß gegen die Normalisierung, also ein fehlerhaftes Design. Normalerweise sollte gelten eine Zeile / eine Spalte = ein Wert.

Wenn du diese Strings vermeiden kannst, tu es. Wenn nicht, ist die Anzahl der Werte immer gleich? Ist die Anzahl der Trennzeichen immer gleich? Gibt es NULL Werte?
 
Vermeide es! Definitiv!

Just for Fun dennoch mal 'ne kleine Fingerübung ;-)

Code:
test=*# select * from uppss1;
 id | vals
----+-------
  1 | 1,3,4
  2 | 2,3
(2 rows)

Time: 0,184 ms
test=*# select * from uppss2;
 id | val
----+------
  1 | eins
  2 | zwei
  3 | drei
  4 | vier
  5 | fünf
(5 rows)

Time: 0,197 ms
test=*# select u1.*, u2.* from uppss1 u1 left join uppss2 u2 on (regexp_split_to_array(vals,',')::int[]) @> array[u2.id];
 id | vals  | id | val
----+-------+----+------
  1 | 1,3,4 |  1 | eins
  1 | 1,3,4 |  3 | drei
  1 | 1,3,4 |  4 | vier
  2 | 2,3  |  2 | zwei
  2 | 2,3  |  3 | drei
(5 rows)


schnell weg ...
 
Vielen Dank, jetzt muss ich ich bisschen nachdenken, wie ich das ganze umsetze...
Ich werde wahrscheinlich eine Zeile / eine Spalte = ein Wert machen
 
Werbung:
Zurück
Oben