0

私は次のクエリを実行するためにphpとmysqlの混合物を使用しています.SQLだけでそれを行う方法があるはずです. コードの一部を取り除いて、私が達成しようとしていることを確認できるように十分に残しました。

どんな助けでも大歓迎です!

SELECT result_id FROM categories
WHERE name = "conventional"


foreach ( $results as $row ){
    $query = "
    DELETE FROM categories
    WHERE result_id = $row->result_id && (name = 'va' OR name = 'fha' OR name = 'usda' OR name = 'other')
    ";
    $this->db($query);
} 

編集:これまでに受け取った回答からすると、これについて十分に説明できていないと思います。このテーブルの列は、id、result_id、name です。

"result" テーブルのエントリに関連するため、同じ result_id を共有する複数のエントリがあります。そのため、「conventional」という名前のエントリの result_id を見つけようとしているので、同じ result_id を持つすべてのエントリを見つけて、それらの名前が「va」、「fha」、「usda」、または「other」の場合はそれらを削除できます。

4

2 に答える 2

0

ループ内のクエリの削除を回避したい場合は、次のようにします。

SELECT result_id FROM categories
WHERE name = "conventional"

// Now build csv of ids    
$arx = array();
foreach ( $results as $row ) {
    $arx[] = $row->result_id;
} 

if(!empty($arx)) {
    $arx_1 = implode(',', $arx);
    $query = "DELETE FROM categories
    WHERE result_id in ({$arx_1}) AND (name = 'va' OR name = 'fha' OR name = 'usda' OR name = 'other')";

    $this->db($query);
}
于 2013-04-19T10:33:34.867 に答える