私は2つのquiresを1つに結合しようとしています。その最初のquireは、3KMの場所の周りにいるユーザーを取得することであり、2番目のクエリは、彼らが働く場所を並べ替えることです。 私は約3KMの特定の会社で働く人々を得ることができるように両方のquiresに参加したいです。 そして、仕事はさまざまな会社名を持つコラムです。2つのクエリtogatherをどのように組み合わせるか?
http://victorybro.esy.es/LocateMe/locateNearme.php?work[]=HCL&work[]=DELL
このリンクは与える: "クエリに失敗しました!"ここで
は私のPHPのコードです:
<?php
$con = mysqli_connect("mysql.hostinger.in", "u408122646_chat", "123", "u408122646_chat");
$work = $_GET['work'];
$locate_me = array();
foreach ($_REQUEST['work'] as $key => $val) {
$locate_me[$key] = filter_var($val, FILTER_SANITIZE_STRING);
}
$works = "'" . implode("','", $locate_me) . "'";
$sql="SELECT id,latitude,londitude, (6371 * acos(cos(radians(12.95665699)) * cos(radians(latitude)) * cos(radians(londitude) - radians(80.23708535)) + sin(radians(12.95665699)) * sin(radians(latitude)))) AS distance FROM locate_me HAVING distance < 1 ORDER BY distance LIMIT 0 , 20
UNION
SELECT * FROM locate_me WHERE work IN ({$works})";
$res=mysqli_query($con,$sql);
if(!$res)
{
die("Query Failed!");
} $response["success"] = true;
$response= array();
while($row = $res->fetch_array(MYSQL_ASSOC)) {
$response[] = $row;}
echo json_encode(array("response"=>$response));
mysqli_free_result($res);
?>
'union'を使用しているときは、別々のクエリが同じ数の列を生成することを確認してください。 – 1000111
は 'mysqli_error($ con)'を使ってエラーメッセージを取得します。すべてのselect文は同じ数の列を返さなければなりません – Jens
(1) 'select'の間で' union 'を実行するとき、selectはunion互換でなければなりません(同じ数の列を持ちます)(2) 'having'グループ化する。 (3)論理を再訪する必要があるのは、1回の選択で必要なことを実行できる可能性があるからです。 – apokryfos