2016-04-19 4 views
0

DQLにいくつかのSQL文を翻訳したいのですが? ユーザーSQLをDQLに翻訳したい

------friend---- 

    id 
    friend_one 
    friend_two 
    statu 

-------------- 

に参照する2属性friend_oneとfriend_twoので、私のSQL文が

UPDATE friend 
SET status="1" 
WHERE 
(friend_one="$user_id" OR friend_two="$user_id") 
AND 
(friend_one="$friend_id" OR friend_two="$friend_id") 

SELECT 'friend_one','friend_two','status' FROM friend 
WHERE 
(friend_one="$user_id" OR friend_two="$user_id") 
AND 
(friend_one="$friend_id" OR friend_two="$friend_id") 
ですしている私は、ユーザエンティティ

-------user-------- 
    id 
    username 
    email 
    password 
    ... 
-------------------- 

と友人エンティティウィッヒを持っています


SELECT F.statu, U.username, U.id 
FROM user U, friend F 
WHERE 
CASE 
WHEN F.friend_one = '$user_id' 
THEN F.friend_two = U.user_id 
WHEN F.friend_two= '$user_id' 
THEN F.friend_one= U.user_id 
END 
AND 
F.statu='1' 

任意のヘルプしてください:/

答えて

0
良い

いますが、実際には、これまで何を試してみましたか?現在のコードを質問に含めるとよいでしょう。

私はあなたに以下のこれらのクエリのようなものをお勧めします: :ここ

/* For update */ 
$result = $db->executeUpdate('UPDATE friend AS f SET f.status = "1" WHERE (f.friend_one = ? OR f.friend_one = ?) AND (f.friend_one = ? OR f.friend_two = ?)', 
      array($user_id, $user_id, $friend_id, $friend_id), 
      array(\PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT) 
      ); 


/* For first select */ 
$stmt = $db->executeQuery('SELECT f.friend_one, f.friend_two, f.status from friend AS f 
      WHERE (f.friend_one = ? OR f.friend_one = ?) AND (f.friend_one = ? OR f.friend_two = ?)', 
      array($user_id, $user_id, $friend_id, $friend_id), 
      array(\PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT, \PDO::PARAM_INT) 
      ); 

$result = $stmt->fetchAll(); 


/* For second select */  
$stmt = $db->executeQuery('SELECT f.status, u.username, u.id from friend AS f 
     INNER JOIN user as u ON u.user_id = 
     CASE WHEN f.friend_one = ? THEN f.friend_two WHEN f.friend_two = ? THEN f.friend_one END 
     AND f.status = "1"', 
     array($user_id, $user_id), 
     array(\PDO::PARAM_INT, \PDO::PARAM_INT) 
     ); 

$result = $stmt->fetchAll(); 
0

doctrine query Builderです(免責事項を彼らは非常に生であり、テストされていない注意してください)。

+0

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分を含めて参考にすることが望ましいです(// meta.stackoverflow.com/q/8259)。 – Raju

関連する問題