• 16.04.2024, 20:00
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

SQL Problem

Donnerstag, 10. Januar 2013, 13:31

Hallo zusammen,

ich habe eine SQL Problemstellung, bei der ich einfach auf keinen grünen Zweig komme. Ich habe zwei Tabellen, die so aussehen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Tabelle 1:
Datensatz Mermal     Ausprägung
0001      Lenkrad    Leder
0002      Schaltkn.  Leder

Tabelle 2
Nr.       Merkmal    Ausprägung
A001      Lenkrad    Plastik
A001      Schhaltkn. Leder
A001      Armelhne   Ja
A002      Lenkrad    Plastik
A002      Schhaltkn. Leder
A002      Armelhne   Ja
A003      Lenkrad    Leder
A003      Armelhne   Nein


Das Ergebnis solle die Nr. der Tabelle 2 sein, deren Merkmale und Ausprägungen der Tabelle 1 entsprechen. A001 wird verworfen, da das Merkmal "Lenkrad" zwar vorhanden ist, allerdings in einer falschen Ausprägung. A002 ist ein gültiges Ergebnis, da beide Merkmale in der korrekten Ausprägung vorhanden sind. A003 wird verworfen, da das Mermal "Schaltkn." fehlt.

Mein erster Ansatz war...

MySQL-Abfrage(n)

1
2
3
4
5
6
SELECT     [Tabelle 2].Nr_, COUNT([Tabelle 2].Nr_)
FROM         [Tabelle 1] INNER JOIN
                      [Tabelle 2] ON [Tabelle 1].[Merkmal] = [Tabelle 2].[Merkmal] AND 
                      [Tabelle 1].[Ausprägung] = [Tabelle 2].[Ausprägung]
GROUP BY [Tabelle 2].Nr_
HAVING COUNT([Tabelle 2].Nr_) = COUNT([Tabelle 1].[Datensatz])

...aber damit komme ich nicht weiter.
Kann mir einer von euch dabei helfen? DB ist MS SQL.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cuto8« (10. Januar 2013, 13:37)

Freitag, 11. Januar 2013, 08:33

ich bin nicht der fitteste in sql aber wenn ich das noch halbwegs richtig im. kopf habe, kannst du die JOIN funktion nicht mittels AND verknüpfen.... wenn dann mehrere JOINs über mehrere tabellen ohne AND.
du musst also die tabellen. einmal verknüpfen und danach anders weiterarbeiten. z.b. mittels HAVING
von all den dingen die mir sind verloren gegangen,
habe ich am meisten an meinem Verstand gehangen

Freitag, 11. Januar 2013, 10:16

ich bin nicht der fitteste in sql aber wenn ich das noch halbwegs richtig im. kopf habe, kannst du die JOIN funktion nicht mittels AND verknüpfen.... wenn dann mehrere JOINs über mehrere tabellen ohne AND.
du musst also die tabellen. einmal verknüpfen und danach anders weiterarbeiten. z.b. mittels HAVING
Mal abgesehen davon das dieser Aufbau totaler Müll ist, kann man in einem Join so ziemlich alles prüfen, wenn man weiß was man tut.
Ich rätsel da aber manchmal auch noch dran rum, und machs lieber in einem subselect.

Und ich denke, damit wirst du auch weiter kommen...
Also nimm mal die suchmaschine deiner wahl und such mal nach tsql subselect
Damit solltest du weiter kommen ;)

Freitag, 11. Januar 2013, 22:24

liegt am HAVING... was soll denn rauskommen?
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*