3

2 つのテーブルがあり、1 つはitemsと呼ばれ、もう 1 つはSlidersと呼ばれます。

私は、sliders.item_id = items.idであるすべての列を呼び出したいと思っています。しかし、NULLであるsliders.item_idも呼びたいです 。

したがって、基本的には、制約に一致するすべての関連レコードだけでなく、項目テーブルに対応しないスライダー テーブルのレコードも取得する右結合のようなものです。

簡単に言うと、ポイントは次のとおりです。アイテム (sliders.item_id=items.id) AND (sliders.published=1 AND items.published=1) に属するすべてのスライダーを取得したいのですが、item_id=null のスライダーも取得したいと考えています。

機能するクエリを作成しましたが、満足できません。

select *
from items
right join sliders
on items.id = 27
and items.id = sliders.item_id
and items.published = 1
where sliders.published = 1

テーブル

CREATE TABLE IF NOT EXISTS `items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(30) NOT NULL,
  `item_description` text NOT NULL,
  `published` int(11) NOT NULL,
  PRIMARY KEY (`id`)
)

CREATE TABLE IF NOT EXISTS `sliders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pic_path` text NOT NULL,
  `item_id` int(11) DEFAULT NULL,
  `published` int(11) NOT NULL,
  PRIMARY KEY (`id`)
)

最初に、基本的な MySQL クエリでそれが必要です。後で CakePHP に変換できるからです。

4

2 に答える 2

1

このクエリを試して、

SELECT *
FROM items 
RIGHT JOIN sliders
ON items.id = sliders.item_id
WHERE items.published = 1 AND sliders.published = 1
于 2014-05-23T08:58:24.640 に答える