0
我有這四個表格如下所述。基本上我有飼料與條目有關的類別,每個類別可以是一個主要類別與否(標誌命名爲「委託人」)。 另外每個提要可以是合作伙伴提要或不提供(標記爲「parceiro」)。這是執行此查詢的最佳方法嗎?也許UNION
我想選擇partrners提要所有飼料項目,所以我有這樣的:
SELECT `e` . * , `f`.`titulo` AS `feedTitulo` , `f`.`url` AS `feedUrl`
FROM `feed_entries` AS `e`
INNER JOIN `feeds` AS `f` ON e.feed_id = f.id
INNER JOIN `entries_categorias` AS `ec` ON ec.entry_id = e.id
INNER JOIN `categorias` AS `c` ON ec.categoria_id = c.id
WHERE
e.deleted =0
AND
f.parceiro =1
GROUP BY `e`.`id`
ORDER BY `e`.`date` DESC
LIMIT 5
現在我需要在這個結果從處於主類別,因此沒有合作伙伴供稿的所有條目,我的意思是,包括,只有主要類別的條目。因此,查詢貝婁這樣做:
SELECT `e` . * , `f`.`titulo` AS `feedTitulo` , `f`.`url` AS `feedUrl`
FROM `feed_entries` AS `e`
INNER JOIN `feeds` AS `f` ON e.feed_id = f.id
INNER JOIN `entries_categorias` AS `ec` ON ec.entry_id = e.id
INNER JOIN `categorias` AS `c` ON ec.categoria_id = c.id
WHERE
e.deleted =0
AND
c.principal =1
AND
f.parceiro =0
GROUP BY `e`.`id`
ORDER BY `e`.`date` DESC
LIMIT 5
我需要與日期ordened限制5合併這些結果在一個查詢。
UNION是最好的解決方案,如果是的話,如何編寫查詢?
CREATE TABLE categorias (
id int(11) NOT NULL auto_increment,
nome varchar(100) collate utf8_unicode_ci NOT NULL,
principal int(1) NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE KEY nome (nome)
)
CREATE TABLE entries_categorias (
id int(11) NOT NULL auto_increment,
entry_id int(11) NOT NULL,
categoria_id int(11) NOT NULL,
PRIMARY KEY (id),
KEY entry_id (entry_id),
KEY categoria_id (categoria_id)
)
CREATE TABLE feeds (
id int(11) NOT NULL auto_increment,
categoria_id int(11) NOT NULL,
titulo varchar(255) collate utf8_unicode_ci NOT NULL,
link varchar(255) collate utf8_unicode_ci NOT NULL,
url varchar(255) collate utf8_unicode_ci NOT NULL,
parceiro int(1) NOT NULL,
PRIMARY KEY (id),
KEY categoria_id (categoria_id)
)
CREATE TABLE feed_entries (
id int(11) NOT NULL auto_increment,
feed_id int(11) NOT NULL COMMENT 'Testando os comentários',
titulo varchar(255) collate utf8_unicode_ci NOT NULL,
descricao text collate utf8_unicode_ci NOT NULL,
slug varchar(255) collate utf8_unicode_ci NOT NULL,
link varchar(255) collate utf8_unicode_ci NOT NULL,
permaLink varchar(255) collate utf8_unicode_ci NOT NULL,
html text collate utf8_unicode_ci NOT NULL,
`date` datetime NOT NULL,
created_at datetime NOT NULL,
deleted int(1) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY permaLink (permaLink),
KEY feed_id (feed_id)
)
謝謝!但是我收到了以下消息: #1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊,以便在'WITH results AS(SELECT'e'。*,'f'.'titulo' as'feedTitulo','f'.'url''在第1行 – 2010-08-30 20:24:55
@Keyne - 你在開始時是否有分號?並讓我在最終的select語句中更改變量名,它們是錯誤的 – Brett 2010-08-30 20:32:57
是的,我有。請參閱http://stackoverflow.com/questions/1382573/how-do-you-use-the-clause-in-mysql看起來像Mysql不支持這一點。 – 2010-08-30 20:38:22