[英]sql query multiple fields from a single form input
我正在使用php / mysql和jQuery ui自动填充。 我需要帮助的是从单个输入(芝加哥,il)中查询数据库的两个字段(城市,州)。 给我的是如何组合查询中的字段。
有效的例子
SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = $foo // 'chicago'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;
我想做什么,但没有用
SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = $foo // 'chicago'
OR
City+', '+State = $foo // 'chicago, il'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;
(顺便说一句-状态字段是缩写。)
原因是某些城市名称只有3个或4个字母,并且包含在其他城市名称中,因此用户可能需要输入逗号和州名才能看到自动提示弹出窗口。
我在数据库上尝试使用CONCAT_WS ,但效果很好,以下查询对您来说应该可以使用。
CONCAT_WS的语法在这里 :第一个参数是用于连接字符串的分隔符,这是其他参数
SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = $foo // 'chicago'
OR
CONCAT_WS(', ',City, State) = $foo // 'chicago, il'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;
在运行查询之前,请分割输入字符串,以便执行以下操作:
SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = 'chicago'
OR Zip = '01234'
GROUP BY City, State
ORDER BY State;
如果他们还指定了芝加哥,则该州将变得无关紧要。
你可以试试
SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = 'chicago'
OR( City LIKE "chicago,%" AND State LIKE '%illinois')
OR Zip = '01234'
GROUP BY City, State
ORDER BY State;
我建议将您的字符串连接用括号括起来。 您还可以在MySQL中使用类似CONCAT()或CONCAT_WS()的函数。
您所说的“无效”是什么意思? 子句中断或...?
SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM
(SELECT City, State, Zip, (City +', ' + State) AS CityState
FROM Zips) as SQ
WHERE City = $foo // 'chicago'
OR
CityState = $foo // 'chicago, il'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.