Mysql Query - если три значения существуют в одной строке? - PullRequest
1 голос
/ 13 января 2011

У меня есть таблица,

id / категория / дополнительная / другая

Я хотел бы проверить строку в таблице на наличие дублирующихся записей.

, например:

Услуги / Сантехника / Жилой

Выше может существовать только один раз.

Но ...

Строительство / Сантехника / Жилой

Выше тоже может существовать.

Так что мне нужно проверить все три поля вместе в одной строке?

Мой код не будет работать.

<?php 
// connect here

//

$category = mysql_real_escape_string($_POST['category']);
$extra = mysql_real_escape_string($_POST['extra']);
$another = mysql_real_escape_string($_POST['another']);

$querySTATUS = "SELECT * FROM categories WHERE category ='.$category.' AND extra ='.$extra.' AND another ='.$another'";
$resultSTATUS = mysql_query($querySTATUS) or die(mysql_error());

$CountRows = mysql_num_rows($resultSTATUS);

if($CountRows == 1){
echo "OK";
$query1 = "INSERT INTO categories (category,extra,another) VALUES ( '$category','$extra','$another')";   
$result = mysql_query($query1) or die(mysql_error());
} else {echo "!OK";}exit;?>

У меня есть3 входных поля, которые публикуют данные, очевидно.

Также ответы OK и! OK предназначены для запуска некоторых встроенных jquery на странице формы.

Я просто продолжаю получать ответ! OK в firebug, япробовал варианты запроса, но безуспешно.

Заранее благодарим вас за помощь: -)

Джон

1 Ответ

1 голос
/ 13 января 2011

Этот SQL-запрос покажет вам, сколько строк имеют один и тот же набор категорий, дополнительные и другие.Вы можете отфильтровать WHERE quantity > 1, чтобы просто получить строки с дубликатами.

SELECT CONCAT(category, extra, another) as catexan, COUNT(*) as quantity, category, extra, another FROM categories GROUP BY catexan ORDER BY quantity DESC;

ОБНОВЛЕНИЕ: Я собирался, основываясь на вашем первоначальном описании.Исходя из предоставленной вами информации, это должно сделать то, что вы ищете:

// connect
$category = mysql_real_escape_string($_POST['category']);
$extra = mysql_real_escape_string($_POST['extra']);
$another = mysql_real_escape_string($_POST['another']);

$result = mysql_query("SELECT id FROM categories WHERE category = '$category' AND extra = '$extra' AND another = '$another';");

if (mysql_num_rows($result) > 0) {
  echo '!OK';
} else {
  mysql_query("INSERT INTO categories (category, extra, another) VALUES ('$category', '$extra', '$another');");
  echo 'OK';
}
...