0

我有在两个表中搜索的 sql 查询。城市和国家

这个城市有两种语言,还有这个国家

所以我有 4 个城市 coulmns City 和 ar_city ,country 和 a_country

因为我没有预料到什么用户使用任何语言所以我使用条件or

但我有sql错误..所以怎么做

select * FROM d_cities
WHERE City='algeria center'
OR ar_city='الجزائر العاصمة الجزائر' 
JOIN d_country 
ON d_country.Country = 'algeria' 
OR d_country.ar_country='ألجزائر'
4

2 回答 2

1

对于内部连接,谓词(条件)可以在连接的 on 子句中,(下面假设ar_cityandcity列在 中d_cities)。

Select * FROM d_cities c
   JOIN d_country n 
     ON (n.Country = 'algeria' 
        Or n.ar_country='ألجزائر')
     And (c.City = 'algeria center'
       Or c.ar_city = 'الجزائر العاصمة الجزائر') 

或者在查询的 Where 子句中 但是 where 子句必须在连接之后。

Select * FROM d_cities c
   JOIN d_country n 
     ON n.Country = 'algeria' 
        Or n.ar_country = 'ألجزائر'
WHERE City = 'algeria center'
   OR ar_city = 'الجزائر العاصمة الجزائر' 
于 2013-10-02T13:12:30.240 回答
0

您需要将WHERE子句放在JOIN:

select d_cities.* FROM d_cities
JOIN d_country 
ON d_country.Country = 'algeria' 
OR d_country.ar_country='ألجزائر'
WHERE d_cities.City='algeria center'
OR d_cities.ar_city='الجزائر العاصمة الجزائر' 

您可以从任一表返回任何列 - 此版本仅从 d_cities 返回所有列。

于 2013-10-02T13:04:14.240 回答