• 26.04.2024, 10:07
  • Register
  • Login
  • You are not logged in.

 

Dear visitor, welcome to Aqua Computer Forum. If this is your first visit here, please read the Help. It explains how this page works. You must be registered before you can use all the page's features. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

cuto8

Full Member

SQL Problem

Thursday, January 10th 2013, 1:31pm

Hallo zusammen,

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

Source code

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 queries

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.

This post has been edited 1 times, last edit by "cuto8" (Jan 10th 2013, 1:37pm)

Friday, January 11th 2013, 8:33am

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

Friday, January 11th 2013, 10:16am

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 ;)

Friday, January 11th 2013, 10:24pm

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*