SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.03.2008 15:05:53

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

помогите с селектом

что тут не правильно?

SELECT post_1,post_2 FROM post where post_2 like '%МОСКВА%' and where post_1 like '%000'

Неактивен

 

#2 01.03.2008 15:12:00

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

пробовал так:
SELECT post_1,post_2 FROM post where post_2 like '%МОСКВА%' OR post_1 like '%000'
тоже чо та не то...

Неактивен

 

#3 01.03.2008 15:15:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: помогите с селектом

WHERE указывается 1 раз

SELECT post_1,post_2 FROM post WHERE post_2 LIKE '%МОСКВА%' AND post_1 LIKE '%000';

Неактивен

 

#4 01.03.2008 15:25:18

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

так тоже пробовал...
пишет "syntax error near ""at line 1"

Неактивен

 

#5 01.03.2008 15:28:22

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

mysql> CREATE TABLE post (post_1 text, post_2 text) charset=cp1251;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT post_1,post_2 FROM post WHERE post_2 LIKE '%МОСКВА%' AND post_1 LIKE '%000';
Empty set (0.00 sec)

Неактивен

 

#6 01.03.2008 15:45:06

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

а у меня чо та вот так вот сделанная )))

CREATE TABLE `post` (
  `post_1` varchar(250) default NULL,
  `post_2` varchar(250) default NULL,
  `post_3` varchar(250) default NULL,
  `post_4` varchar(250) default NULL,
  `post_5` varchar(250) default NULL,
  `post_6` varchar(250) default NULL,
  `post_7` varchar(250) default NULL,
  `post_8` varchar(250) default NULL,
  `post_9` varchar(250) default NULL,
  `post_10` varchar(250) default NULL,
  `post_11` varchar(250) default NULL
) TYPE=MyISAM;

может версия старая?

Отредактированно vladimirov (01.03.2008 15:45:40)

Неактивен

 

#7 01.03.2008 15:50:53

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

получилось!!!

SELECT `post_1`,`post_2` FROM `post` WHERE `post_2` LIKE '%МОСКВА%' AND `post_1` LIKE '___000'

а если в конце пишу LIKE '%000' то вылазит ошибка
так и не понял в чем тут проблема.
обьясните пожалуста

Отредактированно vladimirov (01.03.2008 15:51:45)

Неактивен

 

#8 01.03.2008 16:29:32

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

Какая именно ошибка, приведите полностью запрос и ошибку, которая выдается

Неактивен

 

#9 01.03.2008 16:42:42

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

запрос: SELECT `post_1`,`post_2` FROM `post` WHERE `post_2` LIKE '%МОСКВА%' AND `post_1` LIKE '%000'
ошибка: "syntax error near ""at line 1"

запросы выполняю в окошке SQL запросов в программе MySQL-Front 3.2 которая работает через PHP туннель с удаленным MySQL-срвером

Отредактированно vladimirov (01.03.2008 16:43:55)

Неактивен

 

#10 01.03.2008 16:46:53

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

вариант: SELECT `post_1`,`post_2` FROM `post` WHERE `post_2` LIKE '%МОСКВА%' AND `post_1` LIKE '___000'
вполне сойдет. пускай так и останется.

щас возникла другая проблема
как вместо LIKE '%МОСКВА%' вставить переменную
точно знаю что если сделать так: LIKE '".$z."' - то работать будет...
а как мне туда вставить знак %-та ?

ведь сама $z=МОСКВА
а мне надо что бы в селекте было %МОСКВА%

Отредактированно vladimirov (01.03.2008 16:48:16)

Неактивен

 

#11 01.03.2008 17:07:43

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

так и вставить LIKE '%".$z."%'

Может быть у Вас Фронт обрабатывает % каким-то особым образом? В консоли mysql синтаксическая ошибка не возникает

Неактивен

 

#12 01.03.2008 17:49:06

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

да MySQL-Front как та не так обрабатываетsad
сменил программу на Navicat 8 for MySQL - там кстати квери билдер просто замечательный
тока вот возникла одна проблема о которой я написал чуть ниже

Отредактированно vladimirov (01.03.2008 18:48:25)

Неактивен

 

#13 01.03.2008 17:58:58

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

SELECT post_1,post_2 FROM post WHERE post_2 LIKE '%".$z."%' AND post_1 LIKE '%000'
заработал.

а щас вот такая вот задачка встала передо мной
надо что бы если в поле post_1 нет записей удовлетворяющих условию LIKE '%000'
то селект должен быть такой: SELECT post_1, post_8 FROM post WHERE post_8='".$z."'"

пробовал всяко разно - но ничо не выходит.
посоветуйте пожалуйста

Отредактированно vladimirov (01.03.2008 18:49:18)

Неактивен

 

#14 01.03.2008 18:15:10

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

полагаю в селекте должны быть конструкции типа if else на основании например return-а или rezult-а...
тока какой там синтаксис?

Отредактированно vladimirov (01.03.2008 18:49:59)

Неактивен

 

#15 01.03.2008 18:46:13

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

надо что бы, например, если результат выполнения

SELECT
post.post_1,
post.post_2
FROM
post
WHERE
post.post_2 LIKE  '%намцы%' AND
post.post_1 LIKE  '%000'

равен нулю то делать вот такой селект

SELECT
post.post_1,
post.post_8
FROM
post
WHERE
post.post_8 =  'НАМЦЫ'

подскажите пожалуйста

Отредактированно vladimirov (01.03.2008 18:50:41)

Неактивен

 

#16 01.03.2008 19:46:03

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

проще всего написать хранимую процедуру, которая будет это делать

Неактивен

 

#17 02.03.2008 10:44:05

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

а больше никак?

Неактивен

 

#18 02.03.2008 14:13:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

Можно логику написать в том языке, на котором Вы пишите (скажем PHP).

В принципе из любви к искусству можно через UNION написать, во втором запросе продублировать первый в поздапросе.

Код:

SELECT x from Y where Z UNION SELECT k from L where M AND (SELECT count(*) from Y where Z)=0

Неактивен

 

#19 02.03.2008 14:44:37

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

где я ошибся?

SELECT post_1, post_2 from post where post_2 LIKE  '%НАМЦЫ%' AND post_1 LIKE  '%000'
UNION
SELECT post_1, post_8 from post where post_8 =  'НАМЦЫ'
AND
(SELECT count(*) from post_1, post_2 from post where post_2 LIKE  '%НАМЦЫ%' AND post_1 LIKE  '%000')=0

Неактивен

 

#20 02.03.2008 15:02:48

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

У Вас 2 раза FROM в подзапросе

SELECT post_1, post_2 from post where post_2 LIKE  '%НАМЦЫ%' AND post_1 LIKE  '%000'
UNION
SELECT post_1, post_8 from post where post_8 =  'НАМЦЫ'
AND
(SELECT count(*) from post where post_2 LIKE  '%НАМЦЫ%' AND post_1 LIKE  '%000')=0


Изучите пожалуйста синтаксис оператора SELECT, Вы делаете много синтаксических ошибок, из-за которых работа тормозится http://dev.mysql.com/doc/refman/5.0/en/select.html

Неактивен

 

#21 04.03.2008 13:44:55

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

делаю запрос:
SELECT post_1,post_2 from post where post_2 LIKE '%НАМЦЫ%' AND post_1 LIKE '%000'
UNION
SELECT post_1,post_8 from post where post_8 = 'НАМЦЫ'
AND
(SELECT count (*) from post where post_2 LIKE '%НАМЦЫ%' AND post_1 LIKE '%000')=0

но чо вылазит ошипка. помоему что то не так в последнем (вложенном) селекте
SELECT count (*) from post where post_2 LIKE '%НАМЦЫ%' AND post_1 LIKE '%000'
так как если его выполнять отдельно - ругается так:
1064 - syntax error near '(*) from post where post_2 LIKE '%НАМЦЫ%' ... at line 1

Неактивен

 

#22 04.03.2008 13:49:58

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

count(*) следует писать без пробела после count

Неактивен

 

#23 04.03.2008 14:21:27

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

да не. не из-за пробела.
может версия mysql повыше нужна?

Неактивен

 

#24 04.03.2008 15:02:56

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: помогите с селектом

Сам подзапрос должен в любой версии работать

Неактивен

 

#25 04.03.2008 15:42:27

vladimirov
Завсегдатай
Зарегистрирован: 16.12.2007
Сообщений: 69

Re: помогите с селектом

да. сам подзапрос пашет. возвращает 0
SELECT count(*) FROM post WHERE post_2 LIKE '%намцы%' AND post_1 LIKE '%000'
а если кверю SELECT count(*) FROM post WHERE post_2 LIKE '%намцы%' AND post_1 LIKE '%000'=0
возвращает 1

а вот такой запрос не выполняется
(SELECT count(*) FROM post WHERE post_2 LIKE '%намцы%' AND post_1 LIKE '%000')=0

так и не понял почему именно в круглых скобках не работает

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson