0

编辑:对不起,伙计们,我不知道您可以像那样在同一页面上执行三个 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++;
}

我想要的只是同一php页面上的数组1-7(不添加框架集/框架ecc。)?在这个人的示例http://www.dev-explorer.com/articles/multiple-mysql-queries之后,我也尝试在多个查询中打破它,但它没有用。

编辑:示例数据

表格1:

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

表 2:

----------------------------
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,只要我得到那些数组。

4

2 回答 2

0
  1. 您在示例中所做的是执行三个表的笛卡尔积。这意味着将显示三个表中包含的元组的每个组合。

    这可能不是您要查找的内容,因此您应该查看joins以限制行数。

    如果您想冒险进行一些更复杂和嵌套的查询,MySql 还支持像Union这样的Set 操作。但是我建议坚持加入

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

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

于 2013-04-05T18:57:32.097 回答
0

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

您还应该考虑使用 PDO 而不是您正在使用的已弃用的 my_sql_* 函数。这将使您开始:

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

于 2013-04-05T22:47:31.960 回答