|
|
|
| Добрый день всем!
Помогите, пожалуйста составить запрос, не могу сообразить.
Структура таблицы:
CREATE TABLE `catalog` (
`id_catalog` int(8) NOT NULL auto_increment,
`name` text NOT NULL,
`description` text NOT NULL,
`pos` int(3) NOT NULL default '0',
`hide` enum('show','hide') NOT NULL default 'show',
`id_parent` int(8) NOT NULL default '0',
PRIMARY KEY (`id_catalog`),
KEY `id_parent` (`id_parent`)
) ENGINE=MyISAM AUTO_INCREMENT=62 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=62 ;
нужно выбрать все записи в которых id_catalog не встречается ни в одной записи в столбце id_parent.
т.е. нужно выбрать все категории каталога у которых нет дочерних категорий. | |
|
|
|
|
|
|
|
для: gumanoid
(24.09.2009 в 02:42)
| | Тема "вывести отсутствующие значения" пятью строками ниже обсуждалась несколько часов назад. | |
|
|
|
|
|
|
|
для: Trianon
(24.09.2009 в 03:29)
| | Посмотрел ту тему.
Все равно не получается (плохо в запросах еще разбираюсь).
Пробовал вот так:
SELECT *
FROM catalog
LEFT JOIN catalog ON catalog.id_catalog = catalog.id_parent
WHERE catalog.id_parent IS NULL
LIMIT 0 , 30
Ответ MySQL:
#1066 - Not unique table/alias: 'catalog'
Наверное JOIN с одной моей таблицей не должен работать.
Как работать с одной таблицей? Куда копать? | |
|
|
|
|
|
|
|
для: gumanoid
(24.09.2009 в 17:39)
| | используйте алиасы:
FROM catalog AS c1
LEFT JOIN catalog AS c2
Кроме того, как id_parent должен быть ..WHERE catalog.id_parent IS NULL если:
>`id_parent` int(8) NOT NULL default '0',
ступил.. сегодня и "мой день" тоже :)) | |
|
|
|
|
|
|
|
для: gumanoid
(24.09.2009 в 17:39)
| | В запросе, кроме неоднозначности, всё правильно.
Чтобы убрать неоднозначность - применяйте алиасы, как root подсказывает. | |
|
|
|
|
|
|
|
для: Trianon
(24.09.2009 в 18:48)
| | Спасибо всем за помощь, но теперь в phpmyadmin при вводе запроса:
SELECT *
FROM catalog AS c1
LEFT JOIN catalog AS c2 ON c1.id_catalog = c2.id_parent
WHERE c2.id_parent IS NULL
выводит в таком виде:
id_catalog name description pos hide id_parent id_catalog name description pos hide id_parent
11 слон роз_слон 1 show 1 NULL NULL NULL NULL NULL NULL
10 слон син_слон 1 show 9 NULL NULL NULL NULL NULL NULL
Соответственно при выводе из этой выбори в php получаются пустые значения всех полей.
Хотя теперь само количество выбранных строк совпадает с нужным количеством дочерних разделов.
Как убрать дублирование таблицы справа с NULL из выборки?
Или с этим нужно бороться уже в php? Спасибо. | |
|
|
|
|
|
|
|
для: gumanoid
(25.09.2009 в 00:25)
| | почему SELECT * ?
почему в SELECT не перечислить именно те столбики, которые хочется получить? | |
|
|
|
|
|
|
|
для: Trianon
(25.09.2009 в 01:15)
| | Все понял, спасибо большое, вроде все заработало. | |
|
|
|