2013-04-05 38 views
0

編輯:抱歉的傢伙,我不知道你可以在同一頁上做三個SELECT查詢就像那樣,我認爲限制是1查詢/頁,而不是1種查詢/頁面。我已經通過將它分成多個查詢來解決我的問題,但問題仍然存在(只是出於好奇):是否有可能查詢多個表,而沒有WHEN子句連接表而沒有獲得笛卡爾積?從多個表沒有任何共同的mysql查詢

感謝您的回覆,您的許多「分成多個查詢」回覆讓我說:「如果...很容易呢?」 :)。原來的問題如下:


我很新的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頁面(不添加framesets/frames ecc。)? 我也試過在這個人的例子http://www.dev-explorer.com/articles/multiple-mysql-queries之後在多個查詢中打破它,但它沒有奏效。

編輯: 例如數據

表1:

---------------------------- 
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 

我希望能夠在T獲得數組 $ fruit_id,值爲['1','2'],$ f_name ['apple','banana'],$ f_color ['red','green'],$ player_id ['1 ','2','3','4'] ecc ..

它不一定是mysql,只要我得到這些數組。

+0

你爲什麼使用'mysql_query'? – tadman 2013-04-05 18:49:28

+0

你能發佈一些樣本數據和預期結果嗎? – fthiella 2013-04-05 18:50:29

+0

如果他們沒有共同之處,爲什麼你想通過單個查詢連接來獲取它們?在最糟糕的情況下,您應該使用'UNION'查詢,最多運行3次不同的查詢。 – 2013-04-05 18:50:49

回答

0
  1. 你在做什麼在你的例子正在執行三個表的cartesian product。這意味着將顯示三個表中包含的元組的的每個組合

    這可能不是你要找的東西,所以你應該看看加入,以限制行數。

    MySql還支持Set operations聯盟如果你想冒險一些更復雜和嵌套的查詢。不過,我想手動指點只是joins

  2. 堅持如果數據實際上沒有以任何方式,嘗試進行多次查詢(不試圖將一切都變成一個單一的SQL語句)連接,並輸出數據爲準你想要顯示它們的形式。

關於內部消除你在做什麼的詳細信息,我不能給你任何其他建議

+0

我已經添加了一個例子,它屬於你的第二點:不以任何方式連接。從我(很少)的知識中,我無法在同一頁面中進行多個查詢,這就是爲什麼我試圖在同一個查詢中全部使用它。我會很高興有一種方式來做到這一點(我在一段時間內對多個查詢進行了谷歌搜索,我在帖子中引用的頁面是唯一適用於我的情況的頁面)。 – user2250157 2013-04-05 19:31:12

0

只需運行3個獨立的查詢,並把結果放到不同的數組變量。你使這種方式太困難了。停下來思考你的問題一會兒不看代碼

你也應該看看使用PDO而不是你正在使用的已棄用的my_sql_ *函數。這會讓你開始:

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers