2

次のコードは、郵便投票を持っていない、電話番号を持っていない、特定のコードを持っていない、特定の誓約を伴う投票意図と呼ばれる別のテーブルにリストされている、またはそのテーブルにまったくリストされていない選挙人を見つけることになっています。

FROM electors,voting_intention 
WHERE
  electors.telephone > 0 
  AND electors.postal_vote != 1 
  AND (
    electors.mosaic NOT IN ('E1','E2','E3') 
    OR (
      electors.ID = voting_intention.elector 
      AND voting_intention.pledge IN ('U','W','X')
    ) 
    OR electors.ID != voting_intention.elector
  )

現時点では、データベース内の数の何倍もの 200 万件を超えるレコードが作成されています。明らかに何かが間違っていますが、エラーが表示されません。

4

2 に答える 2

1

選挙人とvoting_intentionの間の結合の定義が欠落しているようです

私は次のようなものを見ることを期待します:

FROM electors e 
INNER JOIN voting_intention v 
    ON v.elector_id = e.id

明らかに、キーは各テーブルの正しいキーに置き換えられています。

于 2012-06-28T13:30:52.353 に答える
1
FROM electors e
        LEFT JOIN voting_intention v1 ON e.ID = v1.elector AND v1.pledge IN ('U','W','X') 
        LEFT JOIN voting_intention v2 ON e.ID = v2.elector
WHERE 
    e.telephone > 0 
AND e.postal_vote != 1 /* do not have a postal vote?? */
AND (e.mosaic NOT IN ('E1','E2','E3') 
     OR v1.elector IS NOT NULL
     OR v2.elector IS NULL)
于 2012-06-28T13:32:49.797 に答える