( TCH | 2020. 10. 11., v – 23:47 )

Egy website kéri le. Végrehajtási terv alatt mit értesz, az explaint?

Mir értesz "kézzel leprogramozás" alatt? Olyannal próbálkoztam, hogy leszűröm a `salaries` és `titles` táblát és csak azokat az ID-kat kérem le, amik kellenek, de rossz eredményeket adott, az OP-ban ott a query.

Arra én is gondoltam, hogy csinálok egy közös táblát, amiből kérdezget, aztán ott is update-elgeti, amit kell, csak nem tudom, hogy azt el fogják-e fogadni, bár ez csak az egyik gond. A nagyobbik, hogy próbálkoztam olyannal, hogy

DROP TABLE IF EXISTS `e`;
CREATE TABLE `e` (
  `emp_no` int(11) NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) NOT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` enum('M','F') NOT NULL,
  `hire_date` date NOT NULL,
  `title` varchar(50) NOT NULL,
  `salary` int(11) NOT NULL,
  `dept_name` varchar(40) NOT NULL,
  `dept_no` char(4) NOT NULL,
  PRIMARY KEY (`emp_no`),
  INDEX `birth_date` (`birth_date`),
  FULLTEXT `first_name` (`first_name`),
  FULLTEXT `last_name` (`last_name`),
  INDEX `gender` (`gender`),
  INDEX `hire_date` (`hire_date`),
  FULLTEXT `title` (`title`),
  INDEX `salary` (`salary`),
  FULLTEXT `dept_name` (`dept_name`),
  FULLTEXT `dept_no` (`dept_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `e`
SELECT `employees`.*, `titles`.`title`, `salaries`.`salary`, `departments`.`dept_name`, `departments`.`dept_no`
FROM `employees`
LEFT JOIN `titles` ON
	`titles`.`emp_no` = `employees`.`emp_no` AND
	`titles`.`from_date` = (SELECT MAX(`from_date`) FROM `titles` WHERE `titles`.`emp_no` = `employees`.`emp_no`)
LEFT JOIN `salaries` ON
	`salaries`.`emp_no` = `employees`.`emp_no` AND
	`salaries`.`from_date` = (SELECT MAX(`from_date`) FROM `salaries` WHERE `salaries`.`emp_no` = `employees`.`emp_no`)
LEFT JOIN `dept_emp` ON
	`dept_emp`.`emp_no` = `employees`.`emp_no` AND
	`dept_emp`.`from_date` = (SELECT MAX(`from_date`) FROM `dept_emp` WHERE `dept_emp`.`emp_no` = `employees`.`emp_no`)
LEFT JOIN `departments` ON `dept_emp`.`dept_no` = `departments`.`dept_no`;

Csak ez 11076 sor felett "Error in query (1062): Duplicate entry '21076' for key 'PRIMARY'" hibaüzenetet dobott. Fel nem fogom miért, hiszen a beszúrandó `emp_no` nem ismétlődik sehol, más PRIMARY KEY meg nincs ebben a táblában...

Egyébként a teszt DB itt elérhető: https://github.com/datacharmer/test_db

Materializált nézet MySQL-ben nincs.

Ja, és a lényeg:
gender enum('M','F')

Már itt rossz a sémád! Mi ez a kirekesztés????4!!?!? :-)

Majd írok a MySQL-eseknek, hogy tegyenek be kettő db. 256-bites floatot helyette és akkor két csúszkán lehet beállítani, hogy ki mennyire M, meg F. :P Bár inkább nem adnék nekik ötleteket...