2016-06-03 22 views
0
SELECT user.id, CONCAT(lastname, firstname), year, month, date FROM user 
LEFT JOIN adoption ON user.id = adoption.adopter 
GROUP BY user.id 

id CONCAT(lastname, firstname) year month date 
16 Mr.A      2016 6  25 
17 Mr.B      2016 6  18 
18 Mr.C      NULL NULL NULL 
19 Mr.D      NULL NULL NULL 

//after, I add this, should return Mr.A, C, D 
HAVING SUM(CONCAT(year,month,date)= 2016618) = 0 

ich eine Abfrage LEFT JOIN haben zwei Tabellen Benutzer-Info-Tabelle & ihre PlantabelleMysql Mit sum = 0 return 0 Zeilen

Ich versuche, die, um herauszufinden, haben keinen Zeitplan auf 2.016.618

Ich habe HAVING SUM verwendet, aber es gibt 0 Zeilen

ist jeder weiß, wo ist die Probleme?

+0

try 2.016.618 in Anführungszeichen wickeln, wie ich glaube concat einen String zurückgibt. – Jhecht

+0

Versuchen Sie, COUNT (*) 'als Ergebnisspalte hinzuzufügen. Ich wette, es gibt mehr als eine Zeile für ID 17. Sie sollten stattdessen einfach 'HAVING Jahr = 2016 UND Monat = 6 UND Datum = 18 'schreiben. Ich meine, du kannst keine Daten addieren. Was bedeutet 1. April 2016 + 19. Juli 2020 überhaupt? * (außer Aprils Fool) * – Andreas

+0

mit Jahr = 2016 ... das wird die Person zurückgeben, die einen Zeitplan an diesem Tag hat, aber ich muss Personen, die nicht –

Antwort

0

Ich versuche, auf meinem lokalen Server und @Jhecht ist richtig, CONCAT Rückgabestring und Sie müssen Zitat auf 2016618

So muss Ihr Code

SELECT user.id, CONCAT(lastname, firstname), year, month, date FROM user 
LEFT JOIN adoption ON user.id = adoption.adopter 
GROUP BY user.id 
HAVING SUM(CONCAT(year,month,date) = '2016618') = 0 
+0

Ich finde nur das Problem ist, weil Mr. C & D Jahr, Monat, Datum Spalte sind NULL, daher Summe wird nicht zurück 0, aber ich bin immer noch versuchen, herauszufinden, wie diese Abfrage schreiben –

0

Ich versuche, habe gerade etwas sein, fügen Sie mit Ihrem Ergebnis, vielleicht helfen für Sie.

CREATE TABLE Table1 
    (`id` int, `name` varchar(4), `year` varchar(4), `month` varchar(4), `date` varchar(4)) 
; 

INSERT INTO Table1 
    (`id`, `name`, `year`, `month`, `date`) 
VALUES 
    (16, 'Mr.A', '2016', '6', '25'), 
    (17, 'Mr.B', '2016', '6', '18'), 
    (18, 'Mr.C', NULL, NULL, NULL), 
    (19, 'Mr.D', NULL, NULL, NULL) 
; 

SELECT * FROM Table1 
GROUP BY id 
HAVING SUM(if(CONCAT(year,month,date) = 2016618, 1, 0)) = 0 

Ergebnis:

| id | name | year | month | date | 
+----+------+------+-------+------+ 
| 16 | Mr.A | 2016 | 6  | 25 | 
| 18 | Mr.C | null | null | null | 
| 19 | Mr.D | null | null | null |