Určení sloupce přes který se mají tabulky spojit?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Saavikam
Člen | 17
+
0
-

Ahoj,

s nette začínám, proto se omlouvám za svůj možná dotaz, nemůžu najít řešení.

Mám 2 tabulky, jedna z tabulek funguje jako číselník. A tak se z tabulky programme odkazuje 2 cizími klíči (programme_type_of_performance_scale_id, programme_kind_of_performance_scale_id) do druhé tabulky scale.

V modelu mám toto:

<?php
$selection = $this->database->table('programme');
$selection->where('programme_date_show >= ?', $now);
$selection->where('scale.scale_slug'.' LIKE ?', '%'.$performance.'%');
?>

což spojí tabulky takto:

LEFT JOIN `scale` ON `programme`.`programme_type_of_performance_scale_id` = `scale`.`scale_id`

Jak mám prosím kod upravit, aby se tabulky spojovaly přes druhý cizí klíč:

LEFT JOIN `scale` ON `programme`.`programme_kind_of_performance_scale_id` = `scale`.`scale_id`

V dokumentaci Database: Selection je podobná situace popsána, ale nevím jak ji aplikovat na moji situaci.

Moc děkuji.

Andrea

Ještě DB:

CREATE TABLE `programme` (
  `programme_id` int(11) NOT NULL AUTO_INCREMENT,
  `programme_date_show` datetime NOT NULL COMMENT 'Datum představení (rrrr-mm-dd HH:MM:SS), pokud není známa hodina 00:00:00',
  `programme_actual` enum('a','n','z') COLLATE utf8_czech_ci NOT NULL DEFAULT 'a' COMMENT 'Je aktuální? (a = ano, n = ne, z = zrušeno)',
  `programme_type_of_performance_scale_id` int(11) NOT NULL DEFAULT '41' COMMENT 'Typ představení 41 = predstaveni, 42 = premiera, 43 = I.premiera, 44 = II.premiera, 45 = obnovena premiera, 46 = derniera',
  `programme_kind_of_performance_scale_id` int(11) NOT NULL DEFAULT '51' COMMENT 'Druh představení 51 = vlastní, 52 = zájezd, 53 = Křimická zámecká divadelní slavnost, 54 = Divadlo na zámku',
  `programme_caption` varchar(250) COLLATE utf8_czech_ci DEFAULT NULL COMMENT 'Název (u her se název přenese)',
  PRIMARY KEY (`programme_id`),
  KEY `programme_kind_scale_id` (`programme_kind_of_performance_scale_id`),
  KEY `programme_type_scale_id` (`programme_type_of_performance_scale_id`),
  CONSTRAINT `programme_ibfk_5` FOREIGN KEY (`programme_kind_of_performance_scale_id`) REFERENCES `scale` (`scale_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `programme_ibfk_6` FOREIGN KEY (`programme_type_of_performance_scale_id`) REFERENCES `scale` (`scale_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci COMMENT='Program (seznam představení)';

CREATE TABLE `scale` (
  `scale_id` int(11) NOT NULL AUTO_INCREMENT,
  `scale_caption` varchar(250) COLLATE utf8_czech_ci NOT NULL COMMENT 'Nadpis položky',
  `scale_slug` varchar(250) COLLATE utf8_czech_ci DEFAULT NULL COMMENT 'Slug položky',
  PRIMARY KEY (`scale_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci COMMENT='Číselníky';
norbe
Backer | 405
+
0
-
$selection = $this->database->table('programme');
$selection->where('programme_date_show >= ?', $now);
$selection->where('programme_kind_of_performance_scale.scale_slug'.' LIKE ?', '%'.$performance.'%');
Saavikam
Člen | 17
+
0
-

Ahoj,
moc děkuji, funguje. To mě taky mohlo napadnout. Andrea