4
$sql = "SELECT events.*, leagues.lname as leagueName,leagues.aliasname as AliasName, t1.tname as team1_name, t2.tname as team2_name 
FROM events 
INNER JOIN leagues ON events.leagueid = leagues.id 
INNER JOIN teams AS t1 ON events.teamhid = t1.teamid 
INNER JOIN teams AS t2 ON events.teamaid = t2.teamid 
WHERE sdate='1352835000' ";

COLUMNSを含む TABLE を提供します。

id sdate ... leagueName AliasName team1_name team2_name 

追加の条件を追加するにはどうすればよいですか:

WHERE AliasName LIKE 'word' AND (team1_name LIKE 'word2' OR  team2_name LIKE 'word3')
4

2 に答える 2

2

ALIAS列on(これは)句とインラインで使用できないため、この場合は(サブクエリでラップする以外にwhereを使用する必要があります。tableName.columnName

WHERE leagues.aliasname LIKE 'word' AND 
     (t1.tname LIKE 'word2' OR  t2.tname LIKE 'word3')

使用できない理由は、クエリの実行順序が次のとおりであるためです。

  • FROM句(ここでTABLEエイリアスを設定できます
  • WHERE句
  • GROUPBY句
  • HAVING句
  • SELECT句(ここではCOLUMNエイリアス
  • ORDERBY句
于 2012-11-13T14:35:06.803 に答える
1

そのようです:

SELECT *
FROM
(
    SELECT 
      events.*, 
      leagues.lname as leagueName,
      leagues.aliasname as AliasName, 
      t1.tname as team1_name, 
      t2.tname as team2_name 
    FROM events 
    INNER JOIN leagues ON events.leagueid = leagues.id 
    INNER JOIN teams AS t1 ON events.teamhid = t1.teamid 
    INNER JOIN teams AS t2 ON events.teamaid = t2.teamid 
    WHERE sdate = '1352835000'
)  t
WHERE AliasName LIKE 'word'
  AND (team1_name LIKE 'word2' OR  team2_name LIKE 'word3')
于 2012-11-13T14:35:11.190 に答える