Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с запросом (SELECT) в MySQL 4.1
 
 автор: DmitriyDS   (15.02.2008 в 13:18)   письмо автору
 
 

Не работает следующий запрос в MySQL 4.1

SELECT *
FROM Orders
WHERE cnum IN
(SELECT cnum
FROM Customers
WHERE cname = 'Cisneros');

В 5-ом работает.
Что делать? Есль ли аналог?

   
 
 автор: cheops   (15.02.2008 в 13:52)   письмо автору
 
   для: DmitriyDS   (15.02.2008 в 13:18)
 

А какое сообщение об ошибке выдает?

   
 
 автор: DmitriyDS   (15.02.2008 в 13:57)   письмо автору
 
   для: cheops   (15.02.2008 в 13:52)
 

1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT cnum FROM Customers)

   
 
 автор: arseny   (15.02.2008 в 15:44)   письмо автору
 
   для: DmitriyDS   (15.02.2008 в 13:57)
 

По моему надо не IN а EXIST...

   
 
 автор: DmitriyDS   (15.02.2008 в 15:46)   письмо автору
 
   для: arseny   (15.02.2008 в 15:44)
 

Пробывал, тоже самое...

   
 
 автор: arseny   (15.02.2008 в 16:08)   письмо автору
 
   для: DmitriyDS   (15.02.2008 в 15:46)
 

If a subquery returns any rows at all, EXISTS subquery is TRUE, and NOT EXISTS subquery is FALSE. For example:

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

видимо во вложенный запрос- это типа проверки на существование если есть хоть одна запись- то вернет TRUE и запись из главного запроса попадет в выборку...

   
 
 автор: DmitriyDS   (15.02.2008 в 16:19)   письмо автору
 
   для: arseny   (15.02.2008 в 16:08)
 

Ну да так и делал...
Результат тот же...

   
 
 автор: arseny   (15.02.2008 в 17:01)   письмо автору
 
   для: DmitriyDS   (15.02.2008 в 16:19)
 

Напиши точно как ты делал с EXISTS

   
 
 автор: DmitriyDS   (15.02.2008 в 17:14)   письмо автору
 
   для: arseny   (15.02.2008 в 17:01)
 

Например так:

SELECT *
FROM Orders
WHERE EXISTS
(SELECT cnum
FROM Customers
WHERE cname = 'Cisneros');

Ответ (phpMyAdmin):
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS ( SELECT cnum FROM Customers WHERE cname = 'Cisneros')

   
 
 автор: arseny   (15.02.2008 в 17:53)   письмо автору
 
   для: DmitriyDS   (15.02.2008 в 17:14)
 

Какая версия MySQL?

   
 
 автор: DmitriyDS   (15.02.2008 в 18:35)   письмо автору
 
   для: arseny   (15.02.2008 в 17:53)
 

Я ж в теме указал - 4.1

   
 
 автор: arseny   (15.02.2008 в 19:18)   письмо автору
 
   для: DmitriyDS   (15.02.2008 в 18:35)
 

Ставь 5 :)

   
 
 автор: Trianon   (15.02.2008 в 19:53)   письмо автору
 
   для: DmitriyDS   (15.02.2008 в 13:18)
 

Эта же задача может быть решена простым запросом

SELECT Orders.* FROM Orders
  LEFT JOIN Customers ON Orders.cnum=Custmers.cnum
   WHERE Custmers.cnum IS NULL

   
 
 автор: Thrasher   (18.02.2008 в 10:57)   письмо автору
 
   для: Trianon   (15.02.2008 в 19:53)
 

Скорее так:
SELECT Orders.* FROM Orders 
  LEFT JOIN Customers ON Orders.cnum=Custmers.cnum 
   WHERE Custmers.cnum IS not NULL

   
 
 автор: DmitriyDS   (18.02.2008 в 11:18)   письмо автору
 
   для: Thrasher   (18.02.2008 в 10:57)
 

Ок, спасиба!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования