У меня есть три таблицы - p, m и i. M является связующей таблицей для p и i и имеет атрибут расстояния, чтобы определить, как далеко находится от p. Я хочу сделать все i для каждого p, если он еще не был выбран для предыдущего p. Поскольку вы не можете вызывать select, отличный от одного столбца, я немного смущен относительно того, что я могу сделать. Сейчас мой запрос выглядит следующим образом (надеюсь, все еще легко следовать, как я пытаюсь сделать это немного расплывчатым):Выбор из присоединенной таблицы соединений, только если он еще не был выбран
select p.id, p.name, m.distance, i.id from p join m on p.id=m.p_id join i on m.i_id=i.id where m.distance <= 30 order by p.name;
В принципе, я только хочу, я связан с р, если это не ближе к другому р (что бы определяется m.distance). Есть много предметов, которые больше 30, я не хочу их вообще.
Буду отбивать мне голову против этого в течение часа. Я был бы очень признателен за понимание.
Спасибо. Я просто понял это и пришел сюда, чтобы проверить, насколько я прав, и получил тот же ответ. Я также выбираю min (distance) как расстояние по моему внешнему запросу, чтобы гарантировать, что mysql выбирает ближайший i, когда их несколько. Из того, что я читаю, он иногда может выбирать один случайным образом, когда вы используете группу, и я хотел убедиться, что это не так. Возможно, я ошибаюсь, и это пустая трата SQL, но она все-таки решила мою проблему. Благодарю за ваш ответ. – Skyline969