2017-06-24 4 views
0

Ich bin fast neu mit SQL-Syntax und ich brauche Hilfe, um eine Sicht auf MySQL zu erstellen.Erstellen Sie Ansicht von zwei Tabellen mit Subtraktion

Ich habe eine Tabelle mit einer PK Spalte ID, eine Spalte namens total_seats und ein anderer ist title genannt. In der zweiten Tabelle habe ich mehrere Zeilen mit einer firstname Spalte und einem FK, der der PK (total_seats) in der ersten Tabelle entspricht.

Ich muss eine Sicht erstellen, wo ich die available_seats (total_seats minus Auftreten in der zweiten Tabelle) für jedes Element in der ersten Tabelle berechnen kann.

Eigentlich berechne ich die "belegten" Sitze, aber die Join geben mir das Ergebnis nur für bereits genommene Ereignis, so ist das Ergebnis, dass ich die available_seats für das leere Ereignis nicht sehen.

SELECT b.ID_event, a.*, 
COUNT(*) AS occupied FROM second_table b 
LEFT JOIN first_table a ON b.ID_event = a.ID 
GROUP BY ID_event 

Antwort

1

Sie könnten die Zählung

select a.ID_event, a.total_seats, count(*) as occupied, a.total_seats - count(*) difference 
from first_table a 
left join second_table ba ON b.ID_event = a.ID 
group by a.ID_event, a.total_seats 
+0

Es Werke subtrahieren, aber leider Nähen es zu zählen (und subtrahiert) 'ONE' für die Ereignis-ID, die keine Entsprechung in der zweiten Tabelle. @scaisEdge – Andrea

+0

dann aktualisieren Sie Ihre Frage fügen Sie eine ordnungsgemäße Daten Beispiel und das erwartete Ergebnis ... – scaisEdge

+0

Ich habe endlich das Problem zu lösen, mit diesem Code, um meine Ansicht zu erstellen. Dank @scaisEdge für Inspiration und erste Umsetzung. 'SELECT a. *, (Wählen Sie COUNT (*) FROM zweite_tabelle b Wo b.ID_event = a.ID) AS besetzt, (Wählen a.total_seats-COUNT (*) FROM zweite_tabelle b Wo b.ID_event = a .ID) AS available_seats FROM erste_Tabelle a ' – Andrea

Verwandte Themen