Nette\Database nefunguje automatický left join
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- motorcb
 - Člen | 552
 
Zdravím.
Mám následující strukturu MYSQL db:
CREATE TABLE `bazar` (
  `id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
  `user_id` INTEGER NULL DEFAULT NULL,
  `shop` VARCHAR(10) NULL DEFAULT NULL,
  `date` DATETIME NULL DEFAULT NULL,
  `title` VARCHAR(100) NULL DEFAULT NULL,
  `text` MEDIUMTEXT NULL DEFAULT NULL,
KEY (`id`, `user_id`),
  PRIMARY KEY (`id`, `user_id`),
  UNIQUE KEY (`id`),
  FULLTEXT KEY (`title`, `text`)
);
CREATE TABLE `bazar_comment` (
  `id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
  `bazar_id` INTEGER NULL DEFAULT NULL,
  `user_id` INTEGER NULL DEFAULT NULL,
  `date` DATETIME NULL DEFAULT NULL,
  `text` MEDIUMTEXT NULL DEFAULT NULL,
  PRIMARY KEY (`id`, `bazar_id`, `user_id`)
);
-- ---
-- Foreign Keys
-- ---
ALTER TABLE `bazar_comment` ADD FOREIGN KEY (bazar_id) REFERENCES `bazar` (`id`);
-- ---
-- Table Properties
-- ---
-- ALTER TABLE `bazar` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- ALTER TABLE `bazar_category` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Pokouším se vypsat seznam všech položek v tabulce „bazar“ a ke každé počet komentářů (tabulka bazar_comment)
Používám následující dotaz:
$this->context->database->table('bazar')->select('bazar.*')->select('COUNT(bazar_comment:bazar_id) AS commentsCount')->group('id')
Ovšem vykonávání skončí chybou v dotazu:
SELECT `bazar`.*, COUNT(`bazar_comment`.`bazar_id`) AS `commentsCount`
FROM `bazar`
LEFT JOIN `bazar_comment` ON `bazar`.`` = `bazar_comment`.`bazar_id`
GROUP BY `id`
Je špatně najoiněná tabulka bazar, kde chybí název sloupce:
LEFT JOIN bazar_comment ON bazar.`` =
bazar_comment.bazar_id
Nevěděl by někdo kde dělám chybu? V návrhu db, nebo snad v kodu?

- motorcb
 - Člen | 552
 
hrach:
Ups, díky za připomenutí :) Databáze nyní vypadá takto:
Dochází stále ke stejnému problému :(
CREATE TABLE `bazar` (
  `id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
  `user_id` INTEGER NULL DEFAULT NULL,
  `bazar_category_id` INTEGER NULL DEFAULT NULL,
  `shop` VARCHAR(10) NULL DEFAULT NULL,
  `date` DATETIME NULL DEFAULT NULL,
  `title` VARCHAR(100) NULL DEFAULT NULL,
  `text` MEDIUMTEXT NULL DEFAULT NULL,
KEY (`id`),
  PRIMARY KEY (`id`),
  UNIQUE KEY (`id`),
  FULLTEXT KEY (`title`, `text`)
);
CREATE TABLE `bazar_comment` (
  `id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
  `bazar_id` INTEGER NULL DEFAULT NULL,
  `user_id` INTEGER NULL DEFAULT NULL,
  `date` DATETIME NULL DEFAULT NULL,
  `text` MEDIUMTEXT NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
);
-- ---
-- Foreign Keys
-- ---
ALTER TABLE `bazar_comment` ADD FOREIGN KEY (bazar_id) REFERENCES `bazar` (`id`);
-- ---
-- Table Properties
-- ---
-- ALTER TABLE `bazar` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- ALTER TABLE `bazar_comment` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;