Есть 2 связанных таблицы: teams( `team_id` int(3), `name` varchar(30) ) и calendar ( `id` int(10), `date` date, `team1_id` int(3), `team2_id` int(3) ) team1_id и team2_id - внешние ключи к teams.team_id. На выходе нужна таблица вида id | date | name1 | name2 Первым запросом выбираю записи из calendar, вторым и третьим достаю соответствующие имена из teams. Можно ли одним запросом получить нужные записи?
можно. select calendar.*, teams.name join on calendar.team1 = teams.id Добавлено спустя 41 секунду: хм, чета я забыл как выходить из таких ситуаций. надо сделать AS Добавлено спустя 2 минуты 10 секунд: select calendar.*, teams1.name, teams2.name from calendar join teams AS team1 on calendar.team1 = team1.id join teams AS team2 on calendar.team2 = team2.id
igordata, сработал этот вариант. Только я сейчас обнаружил, что у меня ситуация еще сложнее, между таблицами есть еще одна связующая таблица members: teams( `team_id` int(3), `name` varchar(30) ) members ( `id` int(3), `team_id` int(3) ) calendar ( `id` int(10), `date` date, `member1_id` int(3), `member2_id` int(3) ) и мне важно сохранить структуру таблиц такой... Можно здесь как-то выкрутиться?
select calendar.*, member1.name, member2.name from calendar join members AS member1 on calendar.member1 = member1.id join members AS member2 on calendar.member2 = member2.id join teams AS team1 on member1.team = team1.id join teams AS team2 on member2.team = team2.id