2017-06-20 2 views
1

Ich habe 2 MySQL-Abfragen, die die 2 Ergebnisse unter generiert:Kombination auf 2 MySQL Ergebnisse mit einer zusätzlichen Spalte

SELECT * FROM `full_schedule`; 

Ergebnis:

Date | Time 
____________________ 
27-06-2017 | 0800 
27-06-2017 | 0900 
27-06-2017 | 1000 
27-06-2017 | 1100 
27-06-2017 | 1200 
27-06-2017 | 1300 
27-06-2017 | 0800 
28-06-2017 | 0900 
28-06-2017 | 1000 
28-06-2017 | 1100 
28-06-2017 | 1200 
28-06-2017 | 1300 

und:

SELECT * from `available_schedule`; 

Ergebnis:

Date | Time 
___________________ 
27-06-2017 | 0800 
27-06-2017 | 0900 
28-06-2017 | 1000 

Frage 1: Wie überprüfen Sie beide Ergebnisse und das Ergebnis mit Addition Spalte wie folgt?

Frage 2: Möglich, alle Abfragen in 1 zu kombinieren?

Date | Time | Status 
___________________________ 
27-06-2017 | 0800 | 1 
27-06-2017 | 0900 | 1 
27-06-2017 | 1000 | 0 
27-06-2017 | 1100 | 0 
27-06-2017 | 1200 | 0 
27-06-2017 | 1300 | 0 
27-06-2017 | 0800 | 0 
28-06-2017 | 0900 | 0 
28-06-2017 | 1000 | 1 
28-06-2017 | 1100 | 0 
28-06-2017 | 1200 | 0 
28-06-2017 | 1300 | 0 

Antwort

2

die Mächtigkeit der Tabellen Unter der Annahme full_schedule 1: 1 available_schedule, können Sie nach links ausführen beitreten und erstellen Sie ein berechnetes Feld für Der Status basiert auf der Existenz einer beliebigen Spalte in der rechten Tabelle (available_schedule in diesem Beispiel):

SELECT A.Date, 
     A.Time, 
     (case when B.Time IS NULL then 0 else 1 end) as Status 
FROM full_schedule A 
LEFT JOIN 
     available_schedule B 
ON  A.Date=B.Date 
AND A.Time=B.Time 
<YOUR_WHERE_CLAUSE> 
1

können Sie den folgenden Code verwenden:

(SELECT f.*, 0 as Status FROM full_schedule as f) 
UNION 
(SELECT a.*, 1 as Status from available_schedule as a); 

Wie Sie sehen können, Antwort auf Ihre beiden Fragen ja ist. Sie können eine zusätzliche Spalte hinzufügen (für die Antwort der ersten Frage) und UNION verwenden, um die Menge der Ergebnisse zu kombinieren, wenn Sie die Duplikate jeder Tabelle im Endergebnis entfernt haben.

+0

Darf ich wissen, wie man die 1 in a.Status immer f.Status überschreibt? – dnez

+0

nein. Es überschreibt nichts. Und das Ergebnis wäre genau so, wie du schreibst. – OmG

Verwandte Themen