アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPとデータベースを使い、
顧客の条件に合った物件をメールに記載して送る処理を行っています。
その際、物件を記載する処理[下記(1)]の部分で同じ物件が記載されてしまいます。
(顧客によっては記載されない)
データベース上に重複する物件は存在しないので、なぜ二重に記載されてしまうのかわかりません。
どこを疑えば良いでしょうか。


メール記載例:物件1、物件2、物件3、物件1、物件4、物件2、物件1、物件3、物件3
(二重記載される際のパターンは見つかりません)

コード(簡略化)
----------------------------------------------------------------------
データデース1:顧客リスト
データベース2:物件リスト

//顧客取得
$sql_user = SELECT 条件 FROM 顧客リスト
$result_user = mysql_query($sql_user)
for($i = 0; $i < mysql_num_rows($result_user); $i++){
  $arr_user= mysql_fetch_array($result_user);

  //顧客の条件に合った物件を取得するSQL文
  $sql_match = SELECT * FROM 物件情報リスト WHERE~条件~
  $result_match =mysql_query($sql__match);

  for($i = 0; $i < mysql_num_rows($result_match); $i++){
    $arr_match= mysql_fetch_array($result_match);
    [(1)]物件を記載する処理
  }
1ユーザー分のメールを送る処理
}
----------------------------------------------------------------------

うまく説明できていなかったらすみません。

A 回答 (3件)

SQLの結果が既に重複しているのか、その後の処理で重複させてしまったのか、


どこで重複したかを調べてみましょう。
「[(1)]物件を記載する処理」の前後と、「1ユーザー分のメールを送る処理」の前後、
var_dumpで該当の変数や配列がどういう値になっているか見てみましょう。
    • good
    • 0
この回答へのお礼

>>SQLの結果が既に重複しているのか
下記の回答者様に返信した内容と同様の疑問ですが、例えばデータベースに6件のデータがあった場合に
12件のデータを取得できるSQL文もあるのでしょうか。無知ですみません。

お礼日時:2013/02/07 18:22

> データベースに重複するデータが入っていなかったとしても、SELECT文で取得する際に


> 同じデータを取得することもあるという事でしょうか。

SQL文の書き方次第ではあり得ます。
    • good
    • 0
この回答へのお礼

「物件を記載する処理」の部分で、直前の顧客の物件を重複して記載していたことが原因でした。
ご回答ありがとうございました。

お礼日時:2013/02/08 11:37

$sql_match の詳細なSQL文が分からないのと、物件リストにどのような形で条件が入っているのかが分からないと根本的な原因は分かりませんが、単純に物件情報が重複しないようにするなら $sql_match の SELECT に DISTINCT を付ければいいのではないでしょうか。

    • good
    • 0
この回答へのお礼

>>$sql_match の SELECT に DISTINCT を付ければいいのではないでしょうか
データベースに重複するデータが入っていなかったとしても、SELECT文で取得する際に
同じデータを取得することもあるという事でしょうか。
使用しているSQLの内容をしっかり把握できていないのですが、
どんな条件を入れたとしても、同じデータを2回取得することはないというのが現状の認識です。

お礼日時:2013/02/07 18:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!