Kod
CREATE TABLE news (
id int(10) unsigned NOT NULL auto_increment,
dzial_id int(10) unsigned NOT NULL default '0',
user_id int(10) unsigned default NULL,
tytul varchar(128) default NULL,
tresc text,
PRIMARY KEY (id),
) TYPE=MyISAM;
CREATE TABLE news_categories (
id int(10) unsigned NOT NULL auto_increment,
nazwa varchar(32) default NULL,
symbol varchar(32) default NULL,
PRIMARY KEY (id),
) TYPE=MyISAM;
CREATE TABLE news_comments (
id int(10) unsigned NOT NULL auto_increment,
news_id int(10) unsigned NOT NULL default '0',
autor varchar(32) NOT NULL default '',
PRIMARY KEY (id),
) TYPE=MyISAM;
CREATE TABLE users (
id int(10) unsigned NOT NULL auto_increment,
login varchar(32) NOT NULL default '',
PRIMARY KEY (id),
) TYPE=MyISAM;
I teraz chcę to wszystko scalić, żeby pokazac newsy na stronie:
id int(10) unsigned NOT NULL auto_increment,
dzial_id int(10) unsigned NOT NULL default '0',
user_id int(10) unsigned default NULL,
tytul varchar(128) default NULL,
tresc text,
PRIMARY KEY (id),
) TYPE=MyISAM;
CREATE TABLE news_categories (
id int(10) unsigned NOT NULL auto_increment,
nazwa varchar(32) default NULL,
symbol varchar(32) default NULL,
PRIMARY KEY (id),
) TYPE=MyISAM;
CREATE TABLE news_comments (
id int(10) unsigned NOT NULL auto_increment,
news_id int(10) unsigned NOT NULL default '0',
autor varchar(32) NOT NULL default '',
PRIMARY KEY (id),
) TYPE=MyISAM;
CREATE TABLE users (
id int(10) unsigned NOT NULL auto_increment,
login varchar(32) NOT NULL default '',
PRIMARY KEY (id),
) TYPE=MyISAM;
Kod
SELECT
`users`.`login`,
`users`.`id`,
`news`.`user_id`,
`news`.`data_dodania`,
`news`.`tresc`,
`news`.`tytul`,
COUNT(`news_comments`.`id`) AS `id1`,
`news`.`id` AS `id2`,
`news`.`dzial_id`,
`news_categories`.`symbol`,
`news_categories`.`nazwa`
FROM
`news_categories`
RIGHT OUTER JOIN `news` ON (`news_categories`.`id` = `news`.`dzial_id`),
`news_comments`
RIGHT OUTER JOIN `news` ON (`news_comments`.`news_id` = `news`.`id`),
`users`
RIGHT OUTER JOIN `news` ON (`users`.`id` = `news`.`user_id`)
GROUP BY
`users`.`login`,
`users`.`id`,
`news`.`user_id`,
`news`.`data_dodania`,
`news`.`tresc`,
`news`.`tytul`,
`news`.`id`,
`news`.`dzial_id`,
`news_categories`.`symbol`,
`news_categories`.`nazwa`
ORDER BY
`news`.`id` DESC
Niestety w wyniku otrzymuję:`users`.`login`,
`users`.`id`,
`news`.`user_id`,
`news`.`data_dodania`,
`news`.`tresc`,
`news`.`tytul`,
COUNT(`news_comments`.`id`) AS `id1`,
`news`.`id` AS `id2`,
`news`.`dzial_id`,
`news_categories`.`symbol`,
`news_categories`.`nazwa`
FROM
`news_categories`
RIGHT OUTER JOIN `news` ON (`news_categories`.`id` = `news`.`dzial_id`),
`news_comments`
RIGHT OUTER JOIN `news` ON (`news_comments`.`news_id` = `news`.`id`),
`users`
RIGHT OUTER JOIN `news` ON (`users`.`id` = `news`.`user_id`)
GROUP BY
`users`.`login`,
`users`.`id`,
`news`.`user_id`,
`news`.`data_dodania`,
`news`.`tresc`,
`news`.`tytul`,
`news`.`id`,
`news`.`dzial_id`,
`news_categories`.`symbol`,
`news_categories`.`nazwa`
ORDER BY
`news`.`id` DESC
Cytat
MySQL zwrócił komunikat:
Not unique table/alias: 'news'
Gdzie mój błąd?
Not unique table/alias: 'news'
Zapytanie potrzebowałbym na teraz, a szef mi sie kręci za plecami i za bardzo nie mam jak pogrzebać w manualu.
BTW: Zapytanie stworzyłem EMS MySQL Managerem.