Autor Zpráva
bob99
Profil
Zdravím,
mám tyto tabulky:

CREATE TABLE `knihovnacu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `previous_id` int(11) DEFAULT NULL,
  `avis` int(11) DEFAULT NULL,
  `nazev` char(100) COLLATE utf8_czech_ci DEFAULT NULL,
  `autor` char(100) COLLATE utf8_czech_ci DEFAULT NULL,
  `cena` decimal(10,2) DEFAULT NULL,
  `stav` char(3) COLLATE utf8_czech_ci DEFAULT NULL,
  ) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

CREATE TABLE `knihovnacu_cu` (
  `id_cu` int(11) NOT NULL AUTO_INCREMENT,
  `parentid` int(5) DEFAULT NULL,
  `hloubka` int(5) DEFAULT NULL,
  `cu` char(50) COLLATE utf8_czech_ci DEFAULT NULL,
  `cislo_cu` char(4) COLLATE utf8_czech_ci DEFAULT NULL,
  `sort` int(3) DEFAULT NULL,
  PRIMARY KEY (`id_cu`)
) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

/*Table structure for table `knihovnacu_lidi` */

CREATE TABLE `knihovnacu_lidi` (
  `id_lidi` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `oscislo` varchar(30) COLLATE utf8_czech_ci DEFAULT NULL,
  `jmeno_single` varchar(50) COLLATE utf8_czech_ci DEFAULT NULL,
  `prijmeni_single` varchar(50) COLLATE utf8_czech_ci DEFAULT NULL,
  `cu_lidi` int(3) DEFAULT NULL,
  `oddeleni_lidi` int(3) DEFAULT NULL,
  `stav` int(1) DEFAULT '1',
  PRIMARY KEY (`id_lidi`),
  KEY `oscislo` (`oscislo`),
  KEY `cu` (`cu_lidi`),
  KEY `stav` (`stav`)
) ENGINE=MyISAM AUTO_INCREMENT=464 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

CREATE TABLE `knihovnacu_prideleni` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_prideleni` int(9) DEFAULT NULL,
  `previous_id` int(11) DEFAULT NULL,
  `kniha_id` int(9) DEFAULT NULL,
  `jmeno_id_prideleni` int(9) DEFAULT NULL,
  `urad_prideleni` int(3) DEFAULT NULL,
  `oddeleni_prideleni` int(9) DEFAULT NULL,
  `budova_prideleni` char(50) COLLATE utf8_czech_ci DEFAULT NULL,
  `mistnost_prideleni` char(50) COLLATE utf8_czech_ci DEFAULT NULL,
  `poznamka_prideleni` text COLLATE utf8_czech_ci,
  `predani_datum` date DEFAULT NULL,
  `vraceni_datum` date DEFAULT NULL,
  `stav` char(3) COLLATE utf8_czech_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `cisinve` (`jmeno_id_prideleni`),
  KEY `predmet` (`urad_prideleni`),
  KEY `vyrznac` (`oddeleni_prideleni`),
  KEY `cenapor` (`budova_prideleni`),
  KEY `rok_vyroby` (`mistnost_prideleni`),
  KEY `stav` (`stav`)
) ENGINE=MyISAM AUTO_INCREMENT=49 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

CREATE TABLE `knihovnacu_vypujcky` (
  `id_vypujcky` int(11) NOT NULL AUTO_INCREMENT,
  `previous_id` int(11) DEFAULT NULL,
  `kniha_id` int(9) DEFAULT NULL,
  `id_prideleno` int(9) DEFAULT NULL,
  `jmeno_id_vypujcky` int(9) DEFAULT NULL,
  `urad_vypujcky` int(3) DEFAULT NULL,
  `oddeleni_vypujcky` int(9) DEFAULT NULL,
  `budova_vypujcky` char(50) COLLATE utf8_czech_ci DEFAULT NULL,
  `mistnost_vypujcky` char(50) COLLATE utf8_czech_ci DEFAULT NULL,
  `poznamka_vypujcky` text COLLATE utf8_czech_ci,
  `vypujceni_datum` date DEFAULT NULL,
  `vracenizpet_datum` date DEFAULT NULL,
  `stav` char(3) COLLATE utf8_czech_ci DEFAULT NULL,
  PRIMARY KEY (`id_vypujcky`),
  KEY `cisinve` (`jmeno_id_vypujcky`),
  KEY `predmet` (`urad_vypujcky`),
  KEY `vyrznac` (`oddeleni_vypujcky`),
  KEY `cenapor` (`budova_vypujcky`),
  KEY `rok_vyroby` (`mistnost_vypujcky`),
  KEY `stav` (`stav`)
) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

...,které bych potřeboval propojit jedním select dotazem. Klasicky to vypadá takhle:

SELECT knihovnacu.id AS id_knihovna, knihovnacu.*, knihovnacu_prideleni.*, knihovnacu_lidi.*, knihovnacu_vypujcky.* 
   FROM (knihovnacu)
   LEFT JOIN knihovnacu_prideleni
   ON knihovnacu.id = knihovnacu_prideleni.kniha_id
   LEFT JOIN knihovnacu_lidi
   ON knihovnacu_prideleni.jmeno_id_prideleni = knihovnacu_lidi.id_lidi
   LEFT JOIN knihovnacu_vypujcky
   ON knihovnacu.id = knihovnacu_vypujcky.kniha_id
   ORDER BY nazev

Jak ale přidat znovu "duplicitní" pole z tabulky knihovnacu_lidi svázané k tabulce knihovnacu_vypujcky, které jsou svazáné k tabulce knihovnacu_prideleni? Ve výsledku potřebuji zobrazit pole oscislo k tabulce knihovnacu_prideleni i knihovnacu_vypujcky.

Díky za rady
Kajman
Profil
Uděláte další join s tou samou tabulkou, ale dáte jí jedinečný alias, aby to fungovalo.

LEFT JOIN knihovnacu_lidi lidiv
   ON knihovnacu_vypujcky.jmeno_id_vypujcky = lidiv.id_lidi
bob99
Profil
Kajman:
Díky funguje :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: