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