Проблема с запросом из 5 таблиц

Markus

Новичок
Проблема с запросом из 5 таблиц

есть задача
Сайт1
-----------
Рекламное место 1
Рекламное место 2
Рекламное место 3

Сайт 2
------------
Рекламное место 1
Рекламное место 2
Рекламное место 3

две таблицы для них
CREATE TABLE `ea_catalog` (
`CatalogID` int(11) NOT NULL auto_increment,
`CatalogName` varchar(255) NOT NULL default '',
PRIMARY KEY (`CatalogID`),
KEY `CatalogParent` (`CatalogParent`),
KEY `CatalogNumber` (`CatalogUrl`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=29 ;

CREATE TABLE `ea_catalog_item` (
`CatalogItemID` int(11) NOT NULL auto_increment,
`CatalogItemName` varchar(255) NOT NULL,
`CatalogItemText` text NOT NULL,
`CatalogItemActive` enum('y','n') NOT NULL default 'y',
`CatalogID` int(11) NOT NULL
PRIMARY KEY (`CatalogItemID`),
KEY `CatalogID` (`CatalogID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=17 ;

Связка таблиц по CatalogID
-------------------------------------------------------------

Проект 1
---------
Блок 1
Блок 2
Блок 3

Проект 2
----------
Блок 1
Блок 2
Блок 3

Еще две таблицы
CREATE TABLE `ea_project` (
`ProjectID` int(11) NOT NULL auto_increment,
`ProjectName` varchar(255) NOT NULL,
PRIMARY KEY (`ProjectID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

CREATE TABLE `ea_project_item` (
`ProjectItemID` int(11) NOT NULL auto_increment,
`ProjectItemName` varchar(255) NOT NULL,
`ProjectID` int(11) NOT NULL,
PRIMARY KEY (`ProjectItemID`),
KEY `CatalogID` (`ProjectID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=10 ;

связка через ProjectID
----------------------------------------------------------
Есть связка между ними

CREATE TABLE `ea_cat2proj` (
`CPID` int(11) NOT NULL auto_increment,
`CatalogItemID` int(11) default NULL,
`ProjectItemID` int(11) default NULL,
PRIMARY KEY (`CPID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

связывает catalog_item и project_item
---------------------------------------

ea_cat2proj это будут связыватся рекламное место(CatalogItemID) и блок текста (ProjectItemID). То есть если добавили новый блок текста то он связался с тем рекламным местом, где на сайте еще нет блоков от этого проекта.

вот сам запрос и все тут все застопорилось

SELECT cat_item.CatalogItemID, cat.CatalogName
FROM ea_catalog_item AS cat_item
LEFT JOIN ea_catalog AS cat ON cat.CatalogID = cat_item.CatalogID
LEFT JOIN ea_cat2proj AS link ON cat_item.CatalogItemID = link.CatalogItemID
LEFT JOIN ea_project_item AS proj_item ON proj_item.ProjectItemID = link.CatalogItemID
LEFT JOIN ea_project AS proj ON proj.ProjectID = proj_item.ProjectID
WHERE cat.CatalogID is null
 

alpine

Новичок
Markus
Сформулируй вопрос, что ты хочешь получить и чем тебя не устроил запрос который ты написал.
PS. Нет времени вникать в твою проблему задавая наводящие вопросы.
 

chira

Новичок
Markus

если ты полностью написал запрос, то в нём нет смысла соединять таблицы
Код:
....
EFT JOIN ea_cat2proj AS link ON cat_item.CatalogItemID = link.CatalogItemID
LEFT JOIN ea_project_item AS proj_item ON proj_item.ProjectItemID = link.CatalogItemID
LEFT JOIN ea_project AS proj ON proj.ProjectID = proj_item.ProjectID
...
 
Сверху