来自多个表的mysql查询,没有任何共同点

时间:2013-04-05 18:48:20

标签: php mysql

编辑:对不起伙计们,我不知道你可以在同一页面上做三个SELECT查询,我认为限制是1个查询/页面,而不是1种类型的查询/页面。我通过将其分成多个查询来解决我的问题,但问题仍然存在(仅仅是出于好奇):是否可以在没有连接表的WHEN子句的情况下查询多个表得到笛卡尔积?

感谢您的回复,您的许多“将其划分为多个查询”回复让我说“如果......那么容易怎么办?” :)。原始问题如下:


我对mqsql很新,我遇到了令人讨厌的笛卡尔产品。我正在尝试查询三个没有共同列的表(实际上第二个和第三个表之间存在连接,但忽略它)。 我有表t1(c1,c2,c3),t2(c4,c5),t3(c6,c7),我想做的事情如下:

$query="SELECT * FROM t1, t2, t3";
$request=  mysql_query($query);
$row = mysql_fetch_array($query);
$i=0; while ($row = mysql_fetch_array($request))
{
    $array1[$i]=$row['c1'];
    $array2[$i]=$row['c2'];
    $array3[$i]=$row['c3'];
    $array4[$i]=$row['c4'];
    $array5[$i]=$row['c5'];
    $value6=$row['c6'][1];
    $value7=$row['c7'][1];
    $i++;
}

我想要的只是阵列1-7在同一个php PAGE(没有添加framesets / frames ecc。)? 我也试过在这个人的例子http://www.dev-explorer.com/articles/multiple-mysql-queries之后在多个查询中打破它,但它没有用。

编辑: 示例数据

TABLE1:

----------------------------
fruit_id | f_name | f_color
----------------------------
1        | apple  | red
2        | banana | yellow

TABLE2:

----------------------------
player_id | player_name
----------------------------
1         | John
2         | Scott
3         | Mike
4         | George

表3:

----------------------------
other_id | other_name
----------------------------
1        | Alex

我希望能够在同一页面中获得数组 $ fruit_id,值为['1','2'],$ f_name ['apple','banana'],$ f_color ['red','green'],$ player_id ['1','2', '3','4'] ecc ..

它不一定是mysql,只要我得到那些数组。

2 个答案:

答案 0 :(得分:0)

  1. 您在示例中执行的操作是执行三个表的 cartesian product 。这意味着将显示三个表中包含的元组的每个组合

    这可能不是您想要的,所以您应该查看加入,以限制行数。

    MySql还支持Set operations,如联盟,如果您想冒险进行一些更复杂和嵌套的查询。但是我会建议坚持使用 joins

  2. 如果数据实际上没有以任何方式连接,请尝试发出多个查询(不要尝试将所有内容都放在一个单独的SQL语句中),并以您想要显示它们的任何形式手动输出数据。

  3. 如果没有关于你正在做什么的更多信息,我不能给你任何其他建议

答案 1 :(得分:0)

只需运行3个单独的查询,并将结果放入不同的数组变量中。你这样做太难了;不用看代码就停下来思考一下你的问题

您还应该考虑使用PDO而不是您正在使用的弃用的my_sql_ *函数。这将帮助您入门:

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

相关问题