2011-08-29 30 views
0

我有兩個表,其中一個字段鏈接到另一個表中的ID,在另一個表中,我需要檢查一個值是否有效。這些表是這樣的:指定MySQL加入

TABLE1 
id - table2_id- deleted - user_id 

TABLE2 
id - is_valid 

現在,我已經用加入無濟於事試過了,但是這就是我試圖完成:

選擇從TABLE1行(ID),其中刪除= 0,user_id = $ id,然後我需要將TABLE1的table2_id放到table2_id的行的table2中,並檢查is_valid = 0。

我還需要限制結果到6,並隨機選擇它們。 在此先感謝。

編輯:另一種方式來可視化什麼,我試圖完成:

$query = mysql_query("SELECT id, table2_id FROM table1 WHERE user_id = '$id' AND deleted = '0'"); 

     while ($row = mysql_fetch_array($query)) { 

      $table2_id = $row['table2_id']; 
      $q = mysql_query("SELECT id FROM table2 WHERE id = '$table2_id' AND is_valid = '0'"); 

      if ($q) $final_ids[] = $row['id']; 

     } 
+0

對於高效的隨機行選擇了一大桌的,請參閱從(我的)SQL數據庫[簡單隨機樣本](http://stackoverflow.com/questions/249301/simple-random-samples-from-a-mysql-database)。 – outis

回答

3
SELECT table1.id -- add other fields you might want 
     FROM table1 
INNER JOIN table2 
     ON table1.table2_id = table2.id 
    WHERE user_id = $user_id 
     AND deleted = 0 
     AND is_valid = 0 -- do you really mean 0 here? 
    ORDER BY RAND() 
    LIMIT 6 
+0

對此進行了一些測試,我不確定這是我在找什麼。我也嘗試過自己的'正常'加入。 更新我的編輯也。 –

+0

@Tony那麼這是怎麼回事?從我在你的代碼中讀到的內容來看,這個查詢完全一樣,除了按照你的要求挑選最多6個隨機行之外。 – NullUserException