联接数组中的三个查询


Joining three queries which are in array

我正在尝试添加三个查询:

$query1 = "SELECT * FROM sailors S";
$query2 = "SELECT * FROM boats B";
$query3 = "SELECT * FROM reserves R";

我需要存储在数组中:

$arr1 = array($query1);
$arr2 = array($query2);
$arr3 = array($query3);

我试过这个:

$queryall = 
"SELECT q1.sname, q1.age, q1.rating, q2.bname, q2.color, q3.rdate 
FROM ($arr1) AS q1, ($arr2) AS q2, ($arr3) AS q3 
WHERE q1.sid = q3.sid AND q2.bid = q3.bid";

但是由于数组,它给了我数组来串conversion error.我需要在这三个表处于arraysjoin它们,并获取相应的数据。我怎么能做这样的事情?

SELECT q1.sname, q1.age, q1.rating, q2.bname, q2.color, q3.rdate FROM sailors AS q1, boats AS q2, reserves AS q3 WHERE q1.sid=q3.sid AND q2.bid=q3.bid

我的snytax可能全错了。SQL不是我的强项。您可以使用JOIN,而不是选择所有。

按数组执行。

在对数组的查询中,您为表添加了名称,并从每个列中选择所有列。要构建它,您需要此查询:

 (SELECT * FROM sailors S) (SELECT * FROM boats B) (SELECT * FROM reserves R) WHERE S.sid=R.sid AND B.bid=R.bid

所以

$query="($arr1)($arr2)($arr3) WHERE S.sid=R.sid AND B.bid=R.bid";

或者,如果您想使用AS

$arr1="SELECT q1.name,q1.age,q1.rating FROM sailors AS q1";
$arr2="SELECT q2.bname,q2.color FROM boats AS q2";
$arr3="SELECT q3.rdate FROM reserves AS q3";
$query="($arr1)($arr2)($arr3) WHERE q1.sid=q3.sid AND q2.bid=q3.bid";

如果我理解正确,您应该能够内爆数组,获得字符串结果,并使用它。

实际上,这只是将数组转换为字符串,然后在查询中使用它们。

有关如何在 php 中将具有单个元素的数组转换为字符串的信息,请参阅此问题。

$text1 = array_shift($arr1);
$text2 = array_shift($arr2);
$text3 = array_shift($arr3);
$queryall = 
"SELECT q1.sname, q1.age, q1.rating, q2.bname, q2.color, q3.rdate 
FROM ($text1) AS q1, ($text2) AS q2, ($text3) AS q3 
WHERE q1.sid = q3.sid AND q2.bid = q3.bid";