2017-10-29 1 views
0

Ich habe die folgende AbfrageMySQL Zählen doppelte Felder innerhalb einer Abfrage

SELECT m.uid 
     ,m.ttime 
     ,m.mac 
     ,m.vendor 
     ,m.ssid 
     ,m.rssi 
     ,k.note1 
     ,k.note2 
FROM monitor m 
LEFT OUTER JOIN known k ON m.mac=k.mac 
WHERE (`ttime` > DATE_SUB(now(), INTERVAL 1 DAY)) 
AND (monitor.mac !='b8:27:eb:91:b5:bb') 
ORDER BY monitor.uid desc 

Diese in eine Tabelle formatiert ist. Ich möchte, dass die Tabelle eine zusätzliche Spalte enthält, die angibt, wie oft monitor.mac in der Tabelle angezeigt wird. Dies würde anzeigen, ob es neu oder regelmäßig ist.

Die SQL-Abfrage wird als Zeichenfolge an die php-Seite zu Anzeigezwecken übergeben. Daher bin ich darauf beschränkt, die Abfrage anzupassen, anstatt eine andere Variable mit einer eigenen Abfrage zu verwenden.

Bearbeiten eine Beispiel Ausgangsleitung von der bestehenden Abfrage hinzuzufügen:

3637 
2017-10-29 08:57:20 
6c:88:14:2e:cc:fc 
Intel Corporate 
GHC 
-65 
NULL 
NULL 

wie die Anzahl der dieser MAC erschienen

+0

Sie möchten, dass die Abfrageergebnisse dieses zusätzliche Zählfeld haben? – cars

+0

kann hilfreich sein, um Beispieltabellendaten zu geben, und Beispielausgabe – cars

+0

Ja, ein anderes Feld, das angibt, wie oft monitor.mac in der Tabelle angezeigt wird. Beispieldaten hinzugefügt, um die qurestion –

Antwort

0

Sie können einfach die GROUP BY zusammen mit der Verwendung hinzugefügt werden sollte bedingte Suche, wenn Sie einen bestimmten Monitor mögen, um die Anzahl der Wiederholungen aufzulisten.

SELECT m.uid 
     ,m.ttime 
     ,m.mac 
     ,m.vendor 
     ,m.ssid 
     ,m.rssi 
     ,k.note1 
     ,k.note2 
FROM monitor m 
LEFT OUTER JOIN known k ON m.mac=k.mac 
WHERE (`ttime` > DATE_SUB(now(), INTERVAL 1 DAY)) 
AND (monitor.mac !='b8:27:eb:91:b5:bb') 
GROUP BY monitor.mac 
HAVING count(*) > 1 
ORDER BY monitor.uid desc 
Verwandte Themen