php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen
Alt 28.01.2011, 20:59  
Neuer Benutzer
 
Registriert seit: 28.01.2011
Beiträge: 5
PHP-Kenntnisse:
Fortgeschritten
leecherxp befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Problem mit "HAVING COUNT()"

Hallo an alle,

ich habe heute an einem Test von "Expertrating.com" teilgenommen und bin beim SQL-Test an einer Frage kläglich gescheitert, und es hat mir keine Ruhe gelassen, diese Aufgabe zu lösen, aber irgendwie stehe ich auf dem Schlauch.

Eventuell könnt ihr mir ja helfen

Hier die Frage:

Zitat:
Consider the following tables:

department
----------
deptid (type: INT)
deptname (type: TEXT)
hours (type: INT)
active (type: BIT)


employee
--------
empid (type: INT)
empname (type: TEXT)
deptid (type: INT)
designation (type: TEXT)
salary (type: INT)


Write a query to return the columns empname and deptname of the employees belonging to those departments that have a head count of 4 or more. The records should be returned in alphabetical order of empname.
Mit folgendem SQL-Query bekomme ich zumindest alle Daten angezeigt:

Code:
SELECT employee.empname, department.deptname
FROM employee
INNER JOIN department ON employee.deptid = department.deptid
GROUP BY employee.empid;
Wenn ich nun den letzten Teil der Aufgabe lösen will, muss ich ja mit nem Count() an die Sache rangehen, aber mit dem folgenden Query bekomme ich nur NULL als Ergebnis.

Könnt ihr mir sagen, wo mein Denkfehler ist?

Vielen Dank vorab für eure Hilfe!

Code:
SELECT employee.empname, department.deptname
FROM employee
INNER JOIN department ON employee.deptid = department.deptid
GROUP BY employee.empid
HAVING COUNT(employee.deptid) >= 4;
Hier noch ein MySQL-Dump für den Fall, dass ihr ihn braucht:

Code:
--
-- Table structure for table `department`
--

DROP TABLE IF EXISTS `department`;
CREATE TABLE IF NOT EXISTS `department` (
  `deptid` int(11) DEFAULT NULL,
  `deptname` text,
  `hours` int(11) DEFAULT NULL,
  `active` bit(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `department`
--

INSERT INTO `department` (`deptid`, `deptname`, `hours`, `active`) VALUES
(1, 'department 01', 10, b'1'),
(2, 'department 02', 10, b'1'),
(3, 'department 03', 10, b'1'),
(4, 'department 04', 10, b'1');

-- --------------------------------------------------------

--
-- Table structure for table `employee`
--

DROP TABLE IF EXISTS `employee`;
CREATE TABLE IF NOT EXISTS `employee` (
  `empid` int(11) DEFAULT NULL,
  `empname` text,
  `deptid` int(11) DEFAULT NULL,
  `designation` text,
  `salary` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `employee` (`empid`, `empname`, `deptid`, `designation`, `salary`) VALUES
(1, 'employee 01', 1, NULL, NULL),
(2, 'employee 02', 1, NULL, NULL),
(3, 'employee 03', 1, NULL, NULL),
(4, 'employee 04', 1, NULL, NULL),
(5, 'employee 05', 1, NULL, NULL),
(6, 'employee 06', 1, NULL, NULL),
(7, 'employee 07', 1, NULL, NULL),
(8, 'employee 08', 2, NULL, NULL),
(9, 'employee 09', 2, NULL, NULL),
(10, 'employee 10', 2, NULL, NULL);
leecherxp ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.01.2011, 06:19  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 1.987
PHP-Kenntnisse:
Fortgeschritten
erc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz sein
Standard

Lass das Having weg und setzt das COUNT ins SELECT, dann wird der Fehler klar. Die Lösung für die Aufgabe ist ein Subquery. Du musst erst die Departments suchen die die Bedinung erfüllen und dann dazu die Namen der Employees auslesen.
erc ist offline   Mit Zitat antworten
Alt 29.01.2011, 10:56  
Neuer Benutzer
 
Registriert seit: 28.01.2011
Beiträge: 5
PHP-Kenntnisse:
Fortgeschritten
leecherxp befindet sich auf einem aufstrebenden Ast
Standard [Erledigt]

Hallo erc!

Danke für den Denkanstoss!!!

Ich habe das jetzt so gelöst:

Code:
SELECT employee.empname, department.deptname
FROM employee
INNER JOIN department ON employee.deptid = department.deptid
WHERE employee.deptid IN (
  SELECT employee.deptid
  FROM employee
  GROUP BY employee.deptid
  HAVING COUNT(employee.deptid) >= 4
)
ORDER BY employee.empname ASC;
Und das funzt zumindest mal lokal
leecherxp ist offline   Mit Zitat antworten
Alt 29.01.2011, 11:17  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 1.987
PHP-Kenntnisse:
Fortgeschritten
erc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz seinerc kann auf vieles stolz sein
Standard

Zitat:
Zitat von leecherxp Beitrag anzeigen
Danke für den Denkanstoss!!!
Was hab ich gewonnen? Eine Waschmaschine, eine Insel, ein Dummquatscher-Job mit mega Gehalt?

Ich würde dir aber noch empfehlen die Subquery in die FROM Klausel zu verrücken. Zumindestens Mysql wertet ein Subquery in WHERE Klausel immer als "dependent". Das heißt er wird für jeden Datensatz ausgeführt, der ohne diese Bedingung zutrift.
erc ist offline   Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Ajax - Session Problem halskrause PHP Tipps 2009 10 12.01.2010 01:27
[Erledigt] Problem mit Mehrsprachigkeit Sniper_Kotaro PHP Tipps 2009 2 16.12.2009 10:47
Problem beim Download Management mistermint PHP Tipps 2009 8 24.10.2009 10:34
Umlaut Problem nokieone PHP Tipps 2009 7 16.10.2009 18:30
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 13:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 21:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 12:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 11:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 13:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 12:42
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 17:42
problem!!! PHP Tipps 2006 6 08.02.2006 10:06
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 21:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 12:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
write a query to return the columns empname and deptname of the employees belonging to those departments that have a head count of 4 or more. the records should be returned in alphabetical order of empname., consider the following tables: department ---------- deptid (type: int) deptname (type: text) hours (type: int) active (type: bit) employee -------- empid (type: int) empname (type: text) deptid (type: int) designation (type: text) salary (type: int) writ, write a query to return the columns empname and deptname of the employees belonging to those departments that have a head count of 4 or more. the records should be returned in alphabetical order of empname, having count join, having count, consider the following tables: department ---------- deptid (type: int) deptname (type: text) hours (type: int) active (type: bit), write a query to return the columns empname and deptname of the employees belonging to those departments that have a head count of 4 or more., \columns empname and deptname of the employees\, \that have a head count of 4 or more\, \having count\, \to those departments that have a head count of 4 or more\, \head count of 4 or more\, \have a head count of 4 or more\, head count of 4 or more. the records should be returned in alphabetical order of empname., deptname of the employees belonging to those departments that have a head count of 4 or more, having count deutsch, php datenbank having count, the records should be returned in alphabetical order of empname., departments that have a head count of 4 or more, write a query to return the columns empname and deptname of the employees belonging to those departments that have a head count of 4 or more

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum