SQL MYSQL Abfrage mit Zählung von 0

Status
Für weitere Antworten geschlossen.

weswesx

Newbie
Registriert
Aug. 2014
Beiträge
1
Hallo liebe Baseler,

ich sitze momentan an einem MYSQl - Query Problem.
Im Grunde habe ich eine Datenbank mit den Tabellen: Zimmer, Regal, Buch.
Der Tabellen Aufbau ist wie folgt:

Tabelle Zimmer:

Code:
ID | Name
--------------------
 1  | Wohnzimmer
 2  | Gästezimmer
 3  | Schlafzimmer

Code:
Tabelle Regal:
ID | Name| Typ|ZimmerID(key)
--------------------
 1  | Rotes Regal    | Holzregal    |1
 2  | Schwarzes Regal   | Holzregal    |1
 3  | Grünes Regal | Stahlregal |3
 4  | Blaues Regal  | Plastikregal |2

Code:
Tabelle Buch:
ID | Name|RegalID(key)
--------------------
 1  | Buch1   | 1
 2  | Buch2 |  3 
 3  | Buch3  | 2

So nun würde ich gerne eine Abfrage erstellen, die mir sagt wie viele Regale der Typen Holzregal, Plastikregal, Stahlregal in den jeweiligen Zimmern stehen, also wie folgt:

Code:
Typ       |       Wohnzimmer | Gästezimmer | Schlafzimmer
----------------------------------------------------------
Plastikregal |     0           |       1       |      0
Holzregal    |     2           |       0       |      0
Stahlregal   |     0           |       0       |      1

Ich habe mittlerweile schon alles Probiert was mir einfällt aber komme zu keinem richtigen Ergebniss.
Wenn jemand einen Idee hat, würde ich mich riesig freuen.

Vielen Dank im Voraus :)
 
Hi,

definiere mal "alles versucht", das sieht mir relativ einfach nach ein paar Joins und einer Summe aus. Was genau hast du denn schon versucht? Ist das eine Hausaufgabe? Das sieht mir nicht nach einer realen Anwendung aus...

VG,
Mad
 
Du hast sicherlich alle einfachen JOINS versucht.

Das was du hier aber offenbar lernen sollt ist die PIVOT Funktion

Ich denke so weit kommst du einfach:
Code:
DECLARE @Zimmer TABLE ( [ID] INT, [Name] NVARCHAR(100))
DECLARE @Regal TABLE ( [ID] INT, [Name] NVARCHAR(100), [Typ] NVARCHAR(100), [ZimmerID] INT )

INSERT INTO @Zimmer ( [ID], [Name] )
SELECT 1, 'Wohnzimmer' UNION
SELECT 2, 'Gästezimmer' UNION
SELECT 3, 'Schlafzimmer'

INSERT INTO @Regal ( [ID], [Name], [Typ], [ZimmerID] )
SELECT 1, 'Rotes Regal', 'Holzregal', 1 UNION
SELECT 2, 'Schwarzes Regal', 'Holzregal', 1 UNION
SELECT 3, 'Grünes Regal', 'Stahlregal', 3 UNION
SELECT 4, 'Blaues Regal', 'Plastikregal', 2

SELECT  R.[Typ],
        Z.[Name]
FROM    @Zimmer Z
        INNER JOIN @Regal R
            ON R.[ZimmerID] = Z.[ID]

Das was du noch brauchst ist das ganze zu pivotieren...
Ich kann dir natürlich den Code reinposten, aber sinnvoller wäre es wenn du dich darüber beliest und es selbst versuchst. Wenn du gar nicht weiterkommst, kann man es immer noch hier lösen ;)
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben