@dk-web

Subquery returns more than 1 row?

Сделал связанные таблицы - отменная штука, но теперь для вывода на экран мне нужно это все собрать обратно в массив... я уже ранее задавал подобный вопрос, но итогового результата пока так и не достиг..
делаю как-то так:

$query="SELECT a.*, (SELECT `city_id` FROM `staff-city`) as cities FROM `staff`  as a WHERE a.id=2";

Join не прошел, выдергивает только одну запись...

Задача выбрать из таблицы staff запись с id (2) и к ней прицепить все записи из таблицы staff-city.
Получаю ошибку..
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row'

Логично, что больше одной записи - в этом и задача собрать подмножество...
Конечная задача получить массив...
array (
[id]=>значение,
[..]=>значение
[cities]=>array(
        [0]=>2,
        [1]=>26
)

Заранее благодарю.
  • Вопрос задан
  • 1745 просмотров
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Че-т у вас какие-то пробелы с реляционной алгеброй.
LEFT JOIN staff-city к staff, получаете N * M записей для худшего случая, где N количество записей в staff, M количество записей в staff-cities и все записи в staff-cities связаны со всеми записями в staff.

Потом программно сворачиваете эти записи в N, вручную собирая staff-cities в массив для каждого staff.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы