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
есть задача
Сайт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