Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL联接查询问题提供了不准确的返回_Mysql_Sql - Fatal编程技术网

Mysql SQL联接查询问题提供了不准确的返回

Mysql SQL联接查询问题提供了不准确的返回,mysql,sql,Mysql,Sql,我花了几个小时在网站上搜索这个特定的问题,尽管很多人还没有完全解决它。请链接它,如果它存在,我会很高兴地记下这个问题 我有两个表,分别是wb_州和wb_城市,你可以通过键看到: 复合州代码+国家代码和城市id对于各自的表格是不同的 目标:运行联接查询以从wb_状态表(代替状态代码)中拉入状态_名称 除非我使用以下命令,否则我总是通过错误获得sql\u mode=only\u full\u group\u 选择任意_值(c.city_id)作为id, 任何_值(c.city_ascii)作为ci

我花了几个小时在网站上搜索这个特定的问题,尽管很多人还没有完全解决它。请链接它,如果它存在,我会很高兴地记下这个问题

我有两个表,分别是wb_州和wb_城市,你可以通过键看到:

复合州代码+国家代码
城市id
对于各自的表格是不同的

目标:运行联接查询以从wb_状态表(代替状态代码)中拉入
状态_名称

除非我使用以下命令,否则我总是通过错误获得sql\u mode=only\u full\u group\u

选择任意_值(c.city_id)作为id,
任何_值(c.city_ascii)作为ci,
任何值(s.state\u name\u ascii)作为ps,
作为co的任何值(c.国家代码)
来自wb_城市作为c
加入wb_州为s ON
s、 州代码=c.州代码
其中c.city_ascii类似于“aa%”按id分组按co、ps、ci ASC排序
当然,查询是有效的,但一旦我们使用任何_值,它就会失败

唯一id
2959927
-阿伦市只属于一个省
巴登乌尔滕堡
。如何构造此查询?多谢各位

创建表“wb\U城市”(
`城市id`int(11)不为空,
`城市名称'varchar(65)默认为空,
`city_ascii`varchar(65)默认为空,
`状态代码'varchar(55)默认为空,
`state_name_ascii`varchar(45)默认为空,
`国家/地区代码'varchar(45)默认为空,
`country_full`varchar(55)默认为空,
`lat`varchar(45)默认为空,
`lon`varchar(45)默认为空,
主键(`city\u id`)
)
创建表“wb_状态”(
`id`int(11)默认为空,
`状态代码'varchar(10)不为空,
`state_name`varchar(45)默认为空,
`state_name_ascii`varchar(45)默认为空,
`国家/地区代码'varchar(45)不为空,
主键(`state\u code`、`country\u code`)
)
在“wbāU cities”值中插入(14256、'zādshahr'、'Azadshahr'、'09'、'Hamadan'、'IR'、'Iran'、'34.79049'、'48.57011')、(18918、'Protaras'、'Protaras'、'01'、'Famagusta'、'CY'、'塞浦路斯'、'35.0125'、'34.05833')、(23814、'Kahrī'、'Kahriz'、'13'、'Kermanshah'、'IR'、'3834.0553'),“24851,'24851,'N跭r跭rัrūB34851,,'23,'23,,,'IR,'伊朗','伊朗','34.0734,'34.0734.0734,,'2485858585851.851.851,,(32723,,'24853,,,,,,,,,,,,,,,,,(32723.32723.723,,,,,,,,,,,,,,,,,,,,,,,(32723.723.723.723.723,,,,,,,,,,,,,,,,,,,,,,,,,,,(32723.35.35.35.234535.234535.234535.234535.234535.234535.2345353535.23,(32909,'Shahre Jadide Andisheh','Shahre Jadide Andisheh','26','Tehran','IR','Iran','35.6803','51.0193'),(41210,'Khorramdareh','Khorramdareh','36','Zanjan省','IR','36.20898','49.19152'),(50672,'Wanlaweyn','Wanlaweyn','14','Shabeellaha Hoose','SO','2.8938'),(52867、‘Qoryooley’、‘Qoryooley’、‘14’、‘Shabeellaha Hoose’、‘SO’、‘Somalia’、‘1.78784’、‘44.52999’);
在“世界银行”中插入“价值观”(29,'00','亚美尼亚','亚美尼亚','AM'),(11,'00','阿鲁巴','阿鲁巴','AW'),(15,'00','波斯尼亚和黑塞哥维那','波斯尼亚和黑塞哥维那','BA'),(31,'00','博茨瓦纳','Botswana','BW'),(7,'00','白俄罗斯','BY'),(23,'00','库克群岛','CK'),(39,'00','圣诞岛','CX',',(4、'00'、'捷克共和国'、'捷克共和国'、'CZ')、(17、'00'、'西撒哈拉'、'西撒哈拉'、'EH')、(10、'00'、'福克兰群岛(马尔维纳斯群岛)'、'福克兰群岛(马尔维纳斯群岛)'、'FK')、(26、'00'、'阿布哈兹'、'GE')、(27、'00'、'加纳'、'GH'、(37、'00'、'直布罗陀'、'Gibraltar'、'GI'、'3、'00'、'赤道几内亚'、'GQ'),(16,'00','South Georgia and The South Sandwich Islands','South Georgia and The South Sandwich Islands','GS'),(28,'00','Hong','Hong','HK'),(6,'00','Indonesia','ID'),(8,'00','Ireland','IE'),(32,'00','吉尔吉斯斯坦','KG'),(36,'00','Comoros','KM'),(34,'00','Muḩāfaz̧atarwafrah'、'MuhafazatalWafrah'、'KW')、(19、'00'、'Zhezqazghan Oblysy'、'Zhezqazghan Oblysy'、'KZ'、(21、'00'、'立陶宛'、'LT')、(40、'00'、'摩纳哥'、'摩纳哥'、'MC')、(13、'00'、'黑山'、'ME')、(9、'00'、'00'、'马里'、'ML'、'ML')、(5、'00'、'00'、'马其顿'、'MU毛里求斯'、'00'、',(25,'00,'00,'00,'00,'00,'00,'00,'00,'00,,(41,'00,'00,'00,'诺福克岛,'诺福克岛,'诺福克岛,'诺福克岛,'诺福克岛,'00,'00,'00,'00,'00,,,,(41,'00,'00,'00,'00,'00,'巴拿马,'巴拿马,'巴拿马,'巴拿马,,'巴拿马,,'巴拿马,,'PA,,,'PA,,,'PA,,,'PA,,,,,,,'PA,,,,,,,,'PA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,(22,'00,'00,'00,'00,'00,'00,'00,'00,'00,,,,'00,,,,,,,"",,(20、‘00’、‘特克斯和凯科斯群岛’、‘特克斯和凯科斯群岛’、‘TC’、(33、‘00’、‘土库曼斯坦’、‘土库曼斯坦’、‘TM’)、(38、‘00’、‘土耳其’、‘土耳其’、‘TR’、(12、‘00’、‘英属维尔京群岛’、‘英属维尔京群岛’、‘VG’、(18、‘00’、‘津巴布韦’、‘津巴布韦’、‘ZW’、(164、‘01’、‘阿布扎比’、‘阿贝’、‘巴达汉’、‘巴达汉’、‘巴达汉’、‘哈汉’、‘巴达汉’、‘哈汉’),(112,'01','Barbuda','Barbuda','AG'),(118,'01','Aragatsotn','Aragatsotn','Aragatsotn','AM'),(124,'01','Benguela','Benguela','Au'),(45,'01','Buenos Aires','Buenos Aires','AR'),(146,'01','Burgenland,'Burgenland和'AT');

您只能在
州代码
上加入
世界银行城市
世界银行州
,但您也应该使用
国家代码
,因为
州代码
世界银行州
中并不唯一
此外,我不认为有任何理由进行聚合。您只需要连接表:

SELECT c.city_id id, 
       c.city_ascii ci,
       s.state_name_ascii ps, 
       c.country_code co
FROM wb_cities AS c JOIN wb_states AS s 
ON s.state_code=c.state_code AND s.country_code = c.country_code
WHERE c.city_ascii like  'aa%' 
ORDER BY co, ps, ci 

您的数据模型已损坏。以下是
state\u code
的两个定义:

`state_code` varchar(55) 
`state_code` varchar(10)
然而,这是一个未声明的外键关系的一部分

我认为这是根本问题:

PRIMARY KEY (`state_code`, `country_code`)
大概,
ID
是唯一的,因此您应该:

CREATE TABLE `wb_states` (
  `state_id` int(11) DEFAULT PRIMARY KEY,
  `state_code` varchar(10) NOT NULL,
  `state_name` varchar(45) DEFAULT NULL,
  `state_name_ascii` varchar(45) DEFAULT NULL,
  `country_code` varchar(45) NOT NULL,
  `country_full` varchar(55) DEFAULT NULL,
  UNIQUE (`state_code`,`country_code`)
);
然后,您的
wb_cities
表可以适当地定义为:

CREATE TABLE `wb_cities` (
  `city_id` int(11) NOT NULL PRIMARY KEY,
  `city_name` varchar(65) DEFAULT NULL,
  `city_ascii` varchar(65) DEFAULT NULL,
  `state_id` int DEFAULT NULL,
  `lat` varchar(45) DEFAULT NULL,
  `lon` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`city_id`),
  FOREIGN KEY (state_id) REFERENCES wb_states(state_id)
);
您可能还应该有一个“国家”表,但至少国家可以放在“州”表中,而不是“城市”表中

然后,可以使用
state\u id