Вопрос по mysql – MySQL INNER JOIN Псевдоним

23

Кто-нибудь знает, как я могу сделать внутренние объединения и значения псевдонимов внутри, чтобы они не перезаписывали друг друга? Это может выглядеть более понятно, если вы видите мой код:

    SELECT  home, away, g.network, g.date_start 
    FROM    game g
    INNER JOIN team t ON (
        (t.importid = g.home) as home
        OR
        (t.importid = g.away) as away
    )
    ORDER BY date_start DESC 
    LIMIT 7

SOLVED (После справки ниже мой последний запрос)

    SELECT 
        home.market AS home_market, 
        away.market AS away_market, 
        g.network, 
        g.date_start

    FROM game AS g
    INNER JOIN team AS home ON (
        home.importid = g.home
    )
    INNER JOIN team AS away ON (
        away.importid = g.away
    )

    ORDER BY g.date_start DESC 
    LIMIT 7

Ваш Ответ

2   ответа
2

Используйте отдельный столбец, чтобы указать условие соединения

SELECT  t.importid, 
        case 
            when t.importid = g.home 
            then 'home' 
            else 'away' 
        end as join_condition, 
        g.network, 
        g.date_start 
FROM    game g
INNER JOIN team t ON (t.importid = g.home OR t.importid = g.away)
ORDER BY date_start DESC 
LIMIT 7
Эй, это круто, но я пытаюсь разместить оба дома. и "прочь" в том же ряду. Я знаю, что мой вопрос не имел особого смысла. :) Это работает, если я хочу отдельную запись home / row, хотя. JREAM
37

Вам нужно присоединиться дважды:

SELECT home.*, away.*, g.network, g.date_start 
FROM game AS g
INNER JOIN team AS home
  ON home.importid = g.home
INNER JOIN team AS away
  ON away.importid = g.away
ORDER BY g.date_start DESC 
LIMIT 7

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