Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Влоденные запрос в теле FORM 
V
    Опции темы
Mushu
Дата 25.2.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 20.7.2004

Репутация: нет
Всего: -5



Есть две таблицы



Первая таблица
Код

CREATE TABLE `products` (
  `id_product` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `name` TINYTEXT NOT NULL,
  `price` DECIMAL(7,2) DEFAULT '0.00',
  `count` INTEGER(11) DEFAULT '0',
  `mark` FLOAT(4,1) NOT NULL DEFAULT '0.0',
  `description` TEXT COLLATE cp1251_general_ci,
  `id_catalog` INTEGER(11) NOT NULL DEFAULT '0',

  PRIMARY KEY (`id_product`),

  KEY `id_catalog` (`id_catalog`),

  FULLTEXT KEY `search` (`name`, `description`)
)ENGINE=MyISAM COMMENT='' CHECKSUM=0 DELAY_KEY_WRITE=0 PACK_KEYS=0 MIN_ROWS=0 MAX_ROWS=0 ROW_FORMAT=DYNAMIC CHARACTER SET 'cp1251'
COLLATE 'cp1251_general_ci' INSERT_METHOD=NO;
COMMIT;



/* Data for the `products` table  (Records 1 - 30) */

INSERT INTO `products` (`id_product`, `name`, `price`, `count`, `mark`, `description`, `id_catalog`) VALUES 
  (1, 'Celeron 1.8', 1595, 10, 3.6, 'Процессор CeleronR 1.8GHz, 128kb, 478-PGA, 400Mhz, OEM 0.18', 1),
  (2, 'Celeron 2.0GHz', 1969, 2, 3.7, 'Процессор CeleronR 2.0GHz, 128KB, 478-PGA, 400MHz, OEM ', 1),
  (3, 'Celeron 2.4GHz', 2109, 4, 3.9, 'Процессор CeleronR 2.4GHz, 128kb, 478-PGA, 400Mhz, OEM ', 1),
  (4, 'Celeron D 320 2.4GHz', 1962, 1, 4.1, 'Процессор CeleronR D 320 2.4GHz, 256kb, 478-PGA, 533Mhz, OEM', 1),
  (5, 'Celeron D 325 2.53GHz', 2747, 6, 4.1, 'Процессор CeleronR D 325 2.53GHz, 256kb, 478-PGA, 533Mhz, OEM ', 1),
  (6, 'Celeron D 315 2.26GHz', 1880, 6, 4.1, 'Процессор CeleronR D 315 2.26GHz, 256kb, 478-PGA, 533Mhz, OEM ', 1),
  (7, 'Intel Pentium 4 3.2GHz', 7259, 5, 4.5, 'Процессор IntelR PentiumR4 3.2GHz, 1Mb, 478-PGA, 800Mhz, Hyper-Threading, OEM ', 1),
  (8, 'Intel Pentium 4 3.0GHz', 6147, 1, 4.6, 'Процессор IntelR PentiumR4 3.0GHz, 512Kb, 478-PGA, 800Mhz, Hyper-Threading, OEM ', 1),
  (9, 'Intel Pentium 4 3.0GHz', 5673, 12, 4.5, 'Процессор IntelR PentiumR4 3.0GHz, 1Mb, 478-PGA, 800Mhz, Hyper-Treading, OEM ', 1),
  (10, 'Gigabyte GA-8I848P-RS', 1896, 4, 3.9, 'Материнская плата SOCKET-478 Gigabyte GA-8I848P-RS i848, (800Mhz), DDR, AGP 8x, ATA100, SATA , Sound 6ch, USB2.0, ATX', 2),
  (11, 'Gigabyte GA-8IG1000', 2420, 2, 3.8, 'Материнская плата SOCKET-478 Gigabyte GA-8IG1000 i865g,FSB800/533/400,2chDDR400/333/266(4слота),Video,AGP,5PCI,ATA-100,S-ATA', 2),
  (12, 'Gigabyte GA-8IPE1000G', 2289, 6, 3.7, 'Материнская плата Socket-478 Gigabyte GA-8IPE1000G i865PE(800/533/400Mhz),2ch400/333/266DDR,PCI/AGP,U-100,AC`97,Lan(1Gb),S-ATA,USB 2.0, ATX', 2),
  (13, 'Asustek P4C800-E Delux', 5395, 4, 4.1, 'Материнская плата Socket-478 Asustek P4C800-E Delux i875P,FSB800/533Mhz,2chDDR400/333,AGP,6PCI,iEEE1394, Raid, U-133,S-ATA, AC`97, Lan(1000), ATX', 2),
  (14, 'Asustek P4P800-VM\\L i865G', 2518, 6, 4, 'Материнская плата Socket-478 Asustek P4P800-VM\\L i865G FSB800/533/400, 2chDDR400/333/266(4слота),AGP,video,3PCI,ATA-100,S-ATA,lan ,M-ATX', 2),
  (15, 'Epox EP-4PDA3I', 2289, 5, 4, 'Материнская плата Socket-478 Epox EP-4PDA3I i865PE(800Mhz), 2chDDR, PCI/AGP, SATA, Lan, U-100, RAID, AC`97, LAN, ATX', 2),
  (16, 'ASUSTEK A9600XT/TD', 5156, 2, 4.7, 'Видеоадаптер ASUSTEK A9600XT/TD 128Mb DDR SDRAM, 2x400MHz DAC, AGP8x, ATI Radeon 9600XT, DVI, TV- out, BOX ', 3),
  (17, 'ASUSTEK V9520X', 1602, 6, 4, 'Видеоадаптер ASUSTEK V9520X 128Mb DDR SDRAM, 400MHz DAC, AGP 8x, GeForce FX 5200, TV- out, BOX ', 3),
  (18, 'SAPPHIRE 256MB RADEON 9550', 2730, 3, 3.8, 'ВИДЕОКАРТА SAPPHIRE 256MB RADEON 9550, TV-out, DVI, OEM ', 3),
  (19, 'GIGABYTE AGP GV-N59X128D', 5886, 6, 3.6, 'ВИДЕОКАРТА GIGABYTE AGP GV-N59X128D FX5900XT OEM ', 3),
  (20, 'Maxtor 6Y120P0', 2456, 6, 4.5, 'Винчестер 120 GB Maxtor 6Y120P0, UDMA-133, 7200rpm, 8MB ', 4),
  (21, 'Maxtor 6B200P0', 3589, 4, 4, 'Винчестер 200 GB Maxtor 6B200P0, UDMA-133, 7200rpm, 8Mb ', 4),
  (22, 'Samsung SP0812C', 2093, 5, 4, 'Винчестер 80 GB Samsung SP0812C, SATA, 7200rpm SpinPoint P80 SerialATA Буферная кэш-память 8 MB  7200об/мин  Интерфейс Serial ATA 1.0', 4),
  (23, 'Seagate Barracuda ST3160023A', 3139, 3, 4.1, 'Винчестер 160 GB Seagate Barracuda ST3160023A, UDMA-100, 7200rpm, 8Mb ', 4),
  (24, 'Seagate ST3120026A', 2468, 8, 4.2, 'Винчестер 120 GB Seagate ST3120026A, UDMA-100, 7200rpm, 8MB ', 4),
  (25, 'DDR-400 256MB Kingston', 1085, 20, 4.8, 'Оперативная память DDR-400 256MB Kingston ', 5),
  (26, 'DDR-400 256MB Hynix Original ', 1179, 15, 4.6, 'Оперативная память DDR-400 256MB Hynix Original ', 5),
  (27, 'DDR-400 256MB PQI', 899, 10, 4.2, 'Оперативная память DDR-400 256MB PQI ', 5),
  (28, 'DDR-400 512MB Kingston', 1932, 20, 4.8, 'Оперативная память DDR-400 512MB Kingston ', 5),
  (29, 'DDR-400 512MB PQI', 1690, 12, 4.2, 'Оперативная память DDR-400 512MB PQI ', 5),
  (30, 'DDR-400 512MB Hynix', 1717, 8, 4.5, 'Оперативная память DDR-400 512MB Hynix ', 5);


Вторая таблица 

Код


CREATE TABLE `catalogs` (
  `id_catalog` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `name` TINYTEXT NOT NULL,

  PRIMARY KEY (`id_catalog`),

  FULLTEXT KEY `name` (`name`)
)ENGINE=MyISAM COMMENT='' CHECKSUM=0 DELAY_KEY_WRITE=0 PACK_KEYS=0 MIN_ROWS=0 MAX_ROWS=0 ROW_FORMAT=DYNAMIC CHARACTER SET 'cp1251'
COLLATE 'cp1251_general_ci' INSERT_METHOD=NO;
COMMIT;



/* Data for the `catalogs` table  (Records 1 - 5) */

INSERT INTO `catalogs` (`id_catalog`, `name`) VALUES 
  (1, 'Процессоры'),
  (2, 'Материнские платы'),
  (3, 'Видеоадаптеры'),
  (4, 'Жёсткие диски'),
  (5, 'Оперативная память');




Так вот сам запрос

Код


SELECT name, price FROM `products`
WHERE id_catalog = (SELECT id_catalog FROM `catalogs`  WHERE name = "Процессоры")
ORDER BY price


Выполняется нормально. А как только я пытаюсь перенести в тело FROM
выглядит это так 

Код


SELECT name, price 
FROM `products`
(SELECT id_catalog FROM `catalogs`  WHERE name = "Процессоры") AS tabl_catalogs
WHERE id_catalog = tabl_catalogs.id_catalog
ORDER BY price


Выдает ошибку "Что такой синтаксис не поддерживается"  Версия сервера 5.0.41

Обьясните пожалуйста где собака зарылась? 
PM MAIL   Вверх
skyboy
Дата 25.2.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(Mushu @  25.2.2008,  11:39 Найти цитируемый пост)
FROM `products`(SELECT id_catalog FROM `catalogs`  WHERE name = "Процессоры") AS tabl_catalogs

если ты хочешь перечислять несколько таблиц, ставь запятые между ними.
у тебя же
Код

SELECT name,price

а не
Код

SELECT name
price
!
кроме того, лучше(красивее, понятнее) явно делать inner join вместо перечисления в секции FROM нескольких таблиц
PM MAIL   Вверх
Mushu
Дата 25.2.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 20.7.2004

Репутация: нет
Всего: -5



skyboy Огромное Спасибо, заблудился в трех соснах
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1339 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.