Задавайте вопросы, мы ответим
Вы не зашли.
У меня проблема. Первый раз пришлось работать с 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 у меня все так работало) Помогите пожлст.
Неактивен
`weapon.id` правильно будет `weapon`.`id`
Аналогично для `equipment.knight`
Неактивен
спсб, но не помогло
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
Неактивен
Запрос синтаксически верный. У меня отрабатывает нормально.
Это может быть глюк phpadmina.
Для исполнения запросов используйте MySQL Query Browser, входящий в состав пакета MySQL GUI Tools.
Для того, чтобы скачать MySQL GUI Tools, надо перейти по ссылке http://dev.mysql.com/downloads/gui-tools/5.0.html и скачать версию для Windows.
Неактивен
Подозреваю, что Вы просто пытаетесь выполнить несколько запросов подряд.
Запросы нужно отделять точкой с запятой, и, как правильно сказал Вася, нужно
пользоваться клиентом, который умеет работать с базой
Неактивен
поставил другой 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)
Неактивен
`weapon`.`id`= здесь должно быть одно значение, а ваш подзапрос возвращает несколько строк. В этом вы легко можете убедиться выполнив его отдельно.
Нужно переписать подзапрос таким образом, чтобы всегда возвращалась одна строка.
Неактивен
vasya написал:
Нужно переписать подзапрос таким образом, чтобы всегда возвращалась одна строка.
бррр. а как это сделать? использовать циклы? что-то я вообще в ступоре с этими запросами)
Неактивен
Самое простое использовать LIMIT 1. Но надо быть уверенным, что выберется именно нужное вам значение.
Неактивен
наверно я вообще изначально не правильно построил запрос, т.к. мне нужны все значения из подзапроса, и там где значения столбца id совпадает этими значениями вывести значения из столбца weapon.
Неактивен
Тогда вместо `weapon`.`id`= ((.. нужно `weapon`.`id`IN ((..
Неактивен