2012-05-23 34 views
18

İç içe geçme ve diğer ad değerlerini birbirimizin üzerine yazmaması için nasıl yapabileceğimi bilen var mı?MySQL INNER JOIN Alias ​​

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 

cevap

28

:

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 
1

belirtmek için ayrı sütunu kullanın (burada aşağıdaki yardım benim son sorgu sonra)

ÇÖZÜLDÜ

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 
koşul

katılmak: Benim kodunu görmek eğer daha net görünebilir
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 
iki kez katılmaları gerekir
+0

Hey, bu harika - ama aynı anda hem 'ev' hem de 'uzak' yerleştirmeye çalışıyorum. Biliyorum ki benim sorum çok anlamlı değildi. :) Ancak ayrı bir ev/satır kaydı istiyorum eğer bu işe yarıyor. – JREAM