mysql, используйте два выбора - PullRequest
1 голос
/ 03 августа 2010

почему я получаю ошибку: подзапрос возвращает более 1 строки

 SELECT name, cat_id,
    (
    SELECT topic
    FROM category
    WHERE cat = u.cat_id
    ) AS topics
    FROM name u

Спасибо

Ответы [ 9 ]

3 голосов
/ 03 августа 2010

У меня может быть глупый ответ, но почему вы не используете JOIN?

SELECT name.cat_id, name.name, category.topic
FROM name INNER JOIN category 
ON category.cat = name.cat_id
1 голос
/ 03 августа 2010

Подзапрос:

SELECT topic
FROM category
WHERE cat = u.cat_id

Возвращает более одного результата, который вы пытаетесь поместить в один ряд.

0 голосов
/ 03 августа 2010

Если ваш вложенный запрос выбора возвращает более одного, вы можете получить только первый результат, сказав SELECT TOP 1 тему из категории ...

0 голосов
/ 03 августа 2010

нужно объединить 2 стола

SELECT name.name, name.cat_id, category.topic
FROM name, category
WHERE name.cat_id = category.cat
0 голосов
/ 03 августа 2010

Потому что в вашем подзапросе вы получаете несколько строк темы, возвращенных .

А в выбрать подзапрос детали такой случай не разрешен .

Используйте JOINS , если для пользователя требуется несколько строк темы для категории.

0 голосов
/ 03 августа 2010

Поскольку вы используете подзапрос в качестве столбца, он должен возвращать одну строку. Вы можете добавить LIMIT 0,1

0 голосов
/ 03 августа 2010

ну да. Он возвращает несколько строк в вашем случае. Что ты хочешь иметь?

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

0 голосов
/ 03 августа 2010

У вас есть больше тем этой категории ID.

0 голосов
/ 03 августа 2010

потому что у вас есть две строки с одним и тем же котом (я предполагаю, что это означает категорию)

...