Как получить данные из бд с таблицы, если на 1(столбец с первичным ключом) и тот же столбец ссылаются 2 других столбца(2 внешних ключау 1первичного?
В общем суть задачи такова: есть таблица где написаны названия команд, и их номер тимid(имеет первичный ключ).
Так же есть таблица, где есть 2 столбца команда хозяев и команда гостей, в этих столбцах содержатся те же цифры, что и в столбце тимid, необходимо сделать связь от команды хозяев и команды гостей к тимid и чтобы после по id команды Х
и команд Г, можно было узнать их имя, вопрос: можно ли такое сделать и как это сделать, если можно? Пробовал просто сделать внешнии ключи к столбцу, но тогда когда создаю запрос в редакторе, он ничего не выводит, пустые строки.
SELECT Team.TeamName, Matchup.Team_Away, Matchup.Team_Home
FROM Team INNER JOIN
Matchup ON Team.TeamId = Matchup.Team_Home AND Team.TeamId = Matchup.Team_Away
Примерно такой запрос? должен быть, я просто не совсем понимаю, строчки h.Name и v.Name - это ведь 2 разные таблицы так? а у меня в одной таблице лежат именя и айди комананды
в последней строчке, вы обращаетесь h.ID и v.ID - это ведь 2 разные таблицы с одинаковыми данными верно? Только так можно сделать, нельзя ли как нибудь тоже самое к 1 таблице сделать?
спасибо, я в общем создал еще одну таблицу с одинковыми столбцами, и привязал к ней столбец тим гостей, а к другой аналогичной таблице команд, таблицу хозяев, и все получилось, но все таки нельзя ли сделать тоже самое, не создавая теще одну идентичную таблицу, то есть привязать 2 столбца к 1 и чтобы все работало, может есть спец команды? или функции специальныек, не силен в sql, искал ничего подобного не нашел, к сожалению
KryptoPython, вы, видимо, совсем не поняли что я имел ввиду) Я ОДНУ таблицу (teamInfo - таблица с данными по всем командам) присоединил к запросу ДВА раза. Создавать копию или что-то такое не нужно.
Мы можем использовать одни и те же таблицы в запросе, но под разными алиасами.
Может, так вам будет понятнее:
SELECT hv.homeId, h.Name, hv.visitorId, v.Name
FROM home_visitor hv
LEFT JOIN teamInfo h ON (h.Id = hv.homeId)
LEFT JOIN teamInfo v ON (v.Id = hv.homeId)
V Sh., Я еще хотел спросить, а так ли уж плоха идея с 2 одинаковыми таблицами, или так прсото непринято делать, так как есть более изящный и правильный подход?
V Sh., Офигеть, большое спасибо, все заработало, но что если мне унжно к ним добавить еще каки то данные например у них там есть количество голов, тройных голов , промахов итд, как я могу не нарушая данную конструкцию добавить еще какие то данные, но чтобы все это осталось точно так же. Я ведь могу писать в селект еще какие то данные, и ничего не изменится, но что если я буду писатьтам иннер джоин он итд, не сломается ли все это? то есть, как можно продолжить брать данные из других таблиц не нарушая конструкцию, еще раз Большое Спасибо.