2017-12-26 1 views
1

Ich habe diese beiden Tabellen bekam:in derselben Abfrage auf zwei Tabellen

___Subscriptions

|--------|--------------------|--------------| 
| SUB_Id | SUB_HotelId  | SUB_PlanName | 
|--------|--------------------|--------------| 
| 1  | cus_AjGG401e9a840D | Free   | 
|--------|--------------------|--------------| 

___Rooms

|--------|-------------------| 
| ROO_Id | ROO_HotelId  | 
|--------|-------------------| 
| 1  |cus_AjGG401e9a840D | 
| 2  |cus_AjGG401e9a840D | 
| 3  |cus_AjGG401e9a840D | 
| 4  |cus_AjGG401e9a840D | 
|--------|-------------------| 

Ich mag würde die SUB_PlanName auszuwählen und Zählen Sie die Zimmer mit der gleichen HotelId.

Also habe ich versucht:

SELECT COUNT(*) as 'ROO_Count', SUB_PlanName 
FROM ___Rooms 
JOIN ___Subscriptions 
ON ___Subscriptions.SUB_HotelId = ___Rooms.ROO_HotelId 
WHERE ROO_HotelId = 'cus_AjGG401e9a840D' 

und

SELECT 
    SUB_PlanName, 
    (
     SELECT Count(ROO_Id) 
     FROM ___Rooms 
     Where ___Rooms.ROO_HotelId = ___Subscriptions.SUB_HotelId 
    ) as ROO_Count 
FROM ___Subscriptions 
WHERE SUB_HotelId = 'cus_AjGG401e9a840D' 

Aber ich leer Daten bekommen.

Könnten Sie bitte helfen?

Danke.

+0

Können Sie eine Abfrage stellen, die die Tabellen verbindet und ein Ergebnis erzeugt? Vielleicht können wir daraus arbeiten. AUCH: Welchen Datenbankmanager (Software) benutzen Sie? – Smandoli

Antwort

0

Sie müssen immer GROUP BY verwenden, wenn Sie eine Aggregation durchführen (hier COUNT()). Die folgende Abfrage gibt Ihnen die ROO_ID nur für die SUB_HotelId = 'cus_AjGG401e9a840D', weil Sie diese Bedingung in WHERE haben. Wenn Sie die COUNTs für alle Hotel_IDs möchten, können Sie den Filter WHERE aus dieser Abfrage entfernen.

SELECT s.SUB_PlanName, COUNT(*) as 'ROO_Count' 
FROM ___Rooms r 
JOIN ___Subscriptions s 
ON s.SUB_HotelId = r.ROO_HotelId 
WHERE r.ROO_HotelId = 'cus_AjGG401e9a840D' 
GROUP BY s.SUB_PlanName; 

Um sicher zu sein, können Sie auch COUNT(DISTINCT r.ROO_Id), wenn Sie ein sich wiederholendes ROO_Id zählen nicht verdoppeln wollen verwenden können. Aber Ihre Tabellenstrukturen scheinen einzigartige (sich nicht wiederholende) ROO_Id s zu haben, also sollte ein COUNT(*) auch funktionieren.

+0

Hallo, vielen Dank für Ihre Hilfe, aber mit dieser Abfrage machen Sie das gleiche. Ich überprüfe zweimal und meine Tabellen enthalten keine Fehler. – user3640907

+0

Können Sie versuchen, ohne 'WHERE'-Klausel zu laufen, um zu sehen, ob der Join für andere HotelIds funktioniert? – Vashi

+0

Ich habe diesen Fehler: '# 1054 - Field '___ Subscriptions.SUB_HotelId' unbekannt in der ON-Klausel. – user3640907

Verwandte Themen