2011-10-21 15 views
-2

多対多リレーションシップテーブルとそれらに付随するコードについて少し混乱します。多対多リレーションシップクエリ

I持ってtable1

id, username 

そしてtable2

id, votes_up, votes_down 

とヘルパーテーブル(htable):

は何が起こるしたいです
vu, vd, adsid 

、ときに広告をこの投票はすべての広告に行きません。

選択データでの私の試み:

mysql_query("SELECT * 
      FROM dbo.tab2 
      INNER JOIN dbo.htable 
      WHERE tab2.votes_up = htable.vu 
       AND htable.votes_down = htable.vd 
      INNER JOIN dbo.tab1 
      WHERE htable.adsID = table1.ID"); 

そして、私の挿入の試み:

mysql_query("INSERT INTO dbo.htable (vu, vd, adsid) 
      VALUES 
      (SELECT FROM dbo.tab2.votes_up, dbo.tab2.votes_down , dbo.tab1.id)"); 

私の質問:これらの2つのクエリは正しいですか?そうでない場合は、どうすれば修正できますか?更新クエリは何ですか?

+0

私はやっとあなたが言っているかを理解することができます:彼らはおそらくのようなものでなければなりません。より明確になるようにしてください。また、より多くのコード例を提供し、より理解しやすい表構造の例を提供する必要があります。私が今言うことができることから、あなたは1対多の関係をいくつか使うだけでよいはずです。 – casraf

答えて

0

あなたの質問は本当に理解できませんが、SQLクエリが間違っています。

SELECT 
    * 
FROM 
    dbo.tab2 as tab2 
    INNER JOIN dbo.htable as htable 
     ON tab2.votes_up = htable.vu 
     AND tab2.votes_down = htable.vd 
    INNER JOIN dbo.tab1 as tab1 
     ON htable.adsID = tab1.ID 

INSERT INTO dbo.htable (vu, vd, adsID) 
    SELECT 
     votes_up, votes_down, ID 
    FROM 
     dbo.tab2 
+0

あなたが言ったように私はこのコードを試しましたが、私の書いたように、PHPのコードに書かれているように見えます。 –

+0

これは単なるSQL文です。それらを実際に実行するには、それらをPHPのmysql_query()関数に渡す必要があります。また、SELECTクエリの結果を処理するコードを記述する必要がありますが、コードの残りの部分がわからないので、自分で行う必要があります。 –

+0

あなたのコードを実行しましたが、htableに何も挿入しませんでした。投票にforexemple votes_up> 45と投票すると46になり、ページを更新すると再び45になり、データベースには何も起こりません。ここに何かエラーがありますか? –

関連する問題