![]() |
Datenbank: MySQL • Version: 4/5 • Zugriff über: Direkte PMA Abfrage
MySQL: DISTINCT bei einem benutzerdefinierten Feld?
Hallo.
Folgende Query schneidet einen Teil auf `hardwareid` heraus und listet alle Einträge.
SQL-Code:
Gewünscht ist zusätzlich eine Filterung, bei der nur Einträge gezeigt werden, bei denen dieses herausgeschnittene Teil öfters als 1 Mal vorkommt.
SELECT `used_by` , SUBSTRING( `hardwareid` , 33, 32 ) AS `teil`
FROM `...` ORDER BY `teil` Nun habe ich folgendes ausprobiert: 1) COUNT(`teil`) AS `vorkommen` (geht nicht) Gewünscht: WHERE `vorkommen` > 1 2) DISTINCT(`teil`) und GROUP BY `teil` Gewünscht: WHERE COUNT(DISTINCT(`teil`)) > 1 Beides funktioniert nicht, da `teil` ein benutzerdefiniertes und kein natives Feld ist. Was kann ich tun? Gruß blackdrake |
Re: MySQL: DISTINCT bei einem benutzerdefinierten Feld?
Versuch es mal mit einer Derived Table
|
Re: MySQL: DISTINCT bei einem benutzerdefinierten Feld?
Zitat:
SQL-Code:
Wenn man die Anzahl je Gruppe sehen möchte:
SELECT `used_by` , SUBSTRING( `hardwareid` , 33, 32 ) AS `teil`
FROM `...` GROUP BY `teil`, SUBSTRING( `hardwareid` , 33, 32 ) HAVING COUNT(*) > 1
SQL-Code:
SELECT COUNT(*), `used_by` , SUBSTRING( `hardwareid` , 33, 32 ) AS `teil`
FROM `...` GROUP BY `teil`, SUBSTRING( `hardwareid` , 33, 32 ) HAVING COUNT(*) > 1 |
Re: MySQL: DISTINCT bei einem benutzerdefinierten Feld?
Hallo.
Vielen Dank, es hat funktioniert!
SQL-Code:
Es ist irgendwie verwirrend, dass man bei einem GROUP BY bei einem "benutzerdefinierten (AS) Feld" sowohl den definierten Namen als auch die Definition schreiben muss, mit Kommas getrennt - wieso eigentlich?
SELECT `used_by` , SUBSTRING( `hardwareid` , 33, 32 ) AS `teil`, COUNT(*) AS `vorkommen`
FROM `...` GROUP BY `teil`, SUBSTRING( `hardwareid` , 33, 32 ) HAVING COUNT(*) > 1 Außerdem verstehe ich nicht, wieso man "HAVING COUNT(*) > 1" anstelle von "WHERE `vorkommen` > 1" schreibt... :? Gruß blackdrake |
Re: MySQL: DISTINCT bei einem benutzerdefinierten Feld?
HAVING wird Benutzt um Gruppierungen einzuschränken, WHERE für die ganze Ergebnismenge.
Die wenigtsen DBMS unterstützen es definierte Feld-Aliase in WHERE/HAVING zu verwenden |
Re: MySQL: DISTINCT bei einem benutzerdefinierten Feld?
Zitat:
SQL-Code:
Sorry für den Tippfehler
SELECT `used_by` , SUBSTRING( `hardwareid` , 33, 32 ) AS `teil`, COUNT(*) AS `vorkommen`
FROM `...` GROUP BY `used_by`, SUBSTRING( `hardwareid` , 33, 32 ) HAVING COUNT(*) > 1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz