Уникальные / Отдельные значения из запроса PHP / MYSQL - PullRequest
1 голос
/ 20 июля 2011

У меня есть база данных с полями type1, type2, type3, type4 вплоть до type19 вместе с другими полями.То, что я пытаюсь сделать, это получить все поля из этих строк и затем отображать только те поля, которые не являются дубликатами.

Я пытался использовать select distinct type1, type2 etc from products, но не знаю код php, чтобы поместить все поля ($_row['type1'] $_row['type2'] и т. Д.) В одну переменную, а затем отобразить все различные значения из этой переменной.У кого-нибудь есть предложения?

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

Переберите свои результаты и добавьте их в массив.Затем используйте array_unique () для возврата только уникальных значений.

http://php.net/manual/en/function.array-unique.php

Однако вам следует по-настоящему переосмыслить дизайн базы данных, поскольку это довольно плохой способ сделать что-то.*

3 голосов
/ 20 июля 2011

Если вы хотите использовать только SQL-запрос, вы можете сказать

SELECT DISTINCT type1 FROM products ORDER BY type1 

Альтернативой является

SELECT type1, max(1) FROM products GROUP BY type1 

Недостатком является то, что вам нужно выполнить 19 запросов, если вы хотитечтобы получить разные значения для всех ваших столбцов.

Преимущество состоит в том, что если вам нужны разные значения для одного столбца, это намного проще.

Вы можете объединить 19 запросов в for цикл, возможно:

for($i=1;$i<20;$i++) {
  $sql = "SELECT DISTINCT type".$i." FROM products ORDER BY type1";
  // Run the sql query to get the data, then manipulate it as you wish.
}
0 голосов
/ 20 июля 2011

Используйте UNION, чтобы объединить результаты 19 запросов в качестве подзапроса.

SELECT DISTINCT a FROM (
  SELECT DISTINCT type1 AS a FROM products
  UNION
  SELECT DISTINCT type2 AS a FROM products
  UNION 
  ...
  SELECT DISTINCT type19 AS a FROM products
) ORDER BY a
...