MySQL: как получить отличное имя, но также по состоянию?

Мой запрос Currect работает, вот мой текущий подход:

//loop through the defined fields & build query
foreach($searchFields as $searchField){
// if the field is set and not empty
if(isset($_POST[$searchField]) && $_POST[$searchField] != '') {
// create a new condition while escaping the value inputed by the user (SQL Injection)
$searchConditions[] = "`$searchField` LIKE '%" . $_POST[$searchField] . "%'";
}
}

//build the query
//$getExperts_sql = "SELECT * FROM $tablename";
$getExperts_sql = "SELECT *, COUNT(*) as casecount FROM $tablename";

// if there are conditions defined
if(count($searchConditions) > 0) {
// append the conditions
$getExperts_sql .= " WHERE " . implode (' AND ', $searchConditions) ." GROUP BY first,last"; // you can change to 'OR', but I opt'd to apply the filters cumulative
}

Как уже упоминалось, это работает .. (как и должно быть) .. но мне нужна помощь, чтобы получить немного более детальный / конкретный.

в том виде, в каком оно есть .. он выбирает только разные / уникальные имена … (это то, что мне нужно) … но мне также нужно добавить другой фрагмент данных, чтобы он был «отличным» (если это имеет смысл)

В настоящее время … если у меня есть записи с дублирующимися именами … он возвращает только 1 … но если у них другое состояние … он не учитывает это.

пример структуры данных:

Джон Доу CA

Джон Доу CA

Джон Доу CA

Джейн Доу CA

Джейн Доу CA

Джон Доу Нью-Йорк

Джон Доу Нью-Йорк

Дженни Доу WI

Билли Боб П.А.

Билли Боб П.А.

Джон Доу, Вашингтон

Питер Пол FL

Питер Пол FL

Питер Пол FL

Питер Пол FL

в моем столе ..

Я хочу, чтобы он возвратил только 1 John Doe (для CA) … но также вернул John Doe NY (1 раз), а также John Doe WA (1 раз) … ну, он только там один раз … но Вы поняли 🙂

Прямо сейчас я верну Джона Доу только 1 раз … (должен взять первый, найденный в таблице, которую я считаю)

Где, как я ищу, чтобы получить «3» Джон ли вернулся …

Я думаю, я ищу другое имя & государство? вместе? … но не уверен, как я могу изменить свой текущий запрос, чтобы туда попасть.

Я не могу использовать DISTINCT только для имени / фамилии .. и я не могу просто использовать его для состояния ..

0

Решение

Если состояние находится в вашей таблице, это будет работать. Просто добавьте состояние к вашему Group By заявление.

$getExperts_sql .= " WHERE " . implode (' AND ', $searchConditions) ." GROUP BY first,last, state"; // you can change to 'OR', but I opt'd to apply the filters cumulative
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]