SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 13.05.2010 00:39:04

lebrosha
Участник
Зарегистрирован: 13.05.2010
Сообщений: 13

Запрос с Select

У меня проблема. Первый раз пришлось работать с sql. делаю все в phpMyAdmin. У меня есть  таблицы -  equipment и weapon.
Я делаю следующий запрос :
SELECT `weapon` FROM `weapon`
WHERE `weapon.id` =
(SELECT `weapon` FROM `equipment`
WHERE `equipment.knight` = 1)

то биш из таблицы weapon выбираю weapon с id который равен значению weapon из таблицы equipment, вроде как пытаюсь сделать вложенный запрос. Но говорит что синтаксис неправильный. Вроде в Accesse у меня все так работало) Помогите пожлст.

Неактивен

 

#2 13.05.2010 01:37:11

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

Re: Запрос с Select

`weapon.id` правильно будет `weapon`.`id`
Аналогично для `equipment.knight`

Неактивен

 

#3 13.05.2010 01:41:18

lebrosha
Участник
Зарегистрирован: 13.05.2010
Сообщений: 13

Re: Запрос с Select

спсб, но не помогло
SQL-запрос :

SELECT `weapon`
FROM `weapon`
WHERE `weapon`.`id` = (
SELECT `weapon`
FROM `equipment`
WHERE `equipment`.`knight` = 1 )
LIMIT 0, 30

Ответ MySQL:

You have an error in your SQL syntax near 'SELECT `weapon` FROM `equipment` WHERE `equipment`.`knight` = 1) LIMIT 0, 30' at line 1

Неактивен

 

#4 13.05.2010 01:59:00

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

Re: Запрос с Select

Запрос синтаксически верный. У меня отрабатывает нормально.
Это может быть глюк phpadmina.

Для исполнения запросов используйте MySQL Query Browser, входящий в состав пакета MySQL GUI Tools.

Для того, чтобы скачать MySQL GUI Tools, надо перейти по ссылке http://dev.mysql.com/downloads/gui-tools/5.0.html и скачать версию для Windows.

Неактивен

 

#5 13.05.2010 11:41:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запрос с Select

Подозреваю, что Вы просто пытаетесь выполнить несколько запросов подряд.

Запросы нужно отделять точкой с запятой, и, как правильно сказал Вася, нужно
пользоваться клиентом, который умеет работать с базой smile

Неактивен

 

#6 13.05.2010 22:18:27

lebrosha
Участник
Зарегистрирован: 13.05.2010
Сообщений: 13

Re: Запрос с Select

поставил другой phpmyadmin и вроде заработало. но вот еще один вопросик.
Создаю следующий запрос:
SELECT `weapon` FROM `weapon` WHERE
   `weapon`.`id`= ((SELECT `weapon` FROM `equipment` WHERE
      `equipment`.`knight`=(SELECT `id` FROM `knight` WHERE
          `knight`.`name` = 'Илья Муромец')) not in (SELECT `weapon` FROM `equipment` WHERE
                                                     `equipment`.`knight`=(SELECT `id` FROM `knight` WHERE
                                                         `knight`.`name` = 'Алеша Попович')))
А он пишет мол #1242 - Subquery returns more than 1 row
Не пойму я чего он не хочет больше 1 строки выводить штоли? может в настройках поменять что-то надо. или опять ошибки в синтаксисе? помогите.

Отредактированно lebrosha (13.05.2010 22:19:13)

Неактивен

 

#7 13.05.2010 23:11:21

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

Re: Запрос с Select

`weapon`.`id`= здесь должно быть одно значение, а ваш подзапрос возвращает несколько строк. В этом вы легко можете убедиться выполнив его отдельно.
Нужно переписать подзапрос таким образом, чтобы всегда возвращалась одна строка.

Неактивен

 

#8 13.05.2010 23:31:59

lebrosha
Участник
Зарегистрирован: 13.05.2010
Сообщений: 13

Re: Запрос с Select

vasya написал:

Нужно переписать подзапрос таким образом, чтобы всегда возвращалась одна строка.

бррр. а как это сделать? использовать циклы? что-то я вообще в ступоре с этими запросами)

Неактивен

 

#9 13.05.2010 23:57:33

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

Re: Запрос с Select

Самое простое использовать LIMIT 1. Но надо быть уверенным, что выберется именно нужное вам значение.

Неактивен

 

#10 14.05.2010 00:05:55

lebrosha
Участник
Зарегистрирован: 13.05.2010
Сообщений: 13

Re: Запрос с Select

наверно я вообще изначально не правильно построил запрос, т.к. мне нужны все значения из подзапроса, и там где значения столбца id совпадает этими значениями вывести значения из столбца weapon.

Неактивен

 

#11 14.05.2010 00:16:54

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

Re: Запрос с Select

Тогда вместо `weapon`.`id`= ((.. нужно `weapon`.`id`IN ((..

Неактивен

 

#12 14.05.2010 01:13:30

lebrosha
Участник
Зарегистрирован: 13.05.2010
Сообщений: 13

Re: Запрос с Select

спасибо

Неактивен

 

Board footer

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