[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Повторения в массиве
madcat
Всем добрый день! Вот у меня есть вывод из БД вида:
SELECT * FROM tbl

дальше примерено такой код:

while($row = mysql_fetch_object($result))
{
$myarr[$row->id] = array('name'=>$row->name);
}

В массиве получается куча повторений. Пример:

Alexandr
Alexandr
Alexandr
Petr
Petr
Ivan
Ivan

Фукнции типа array_unique не помогают. Вывод нужен примерно такой:

Alexandr
Petr
Ivan


Подскажите пожалуйста как убрать повторения. Спасибо smile.gif



Спустя 22 минуты, 5 секунд (1.05.2010 - 11:43) sergeiss написал(а):
Почитай про GROUP BY для SQL-запросов. Возможно, что это то, что тебе нужно.

Спустя 7 минут, 16 секунд (1.05.2010 - 11:50) madcat написал(а):
Нет. Т.к. мне нада вывести сразу несколько данных из разных полей. Тоесть я пробовал
SELECT DISTINCT name,name1,name2,name3 FROM tbl
но там тоже повторения все же остаются...

Спустя 13 минут, 20 секунд (1.05.2010 - 12:04) sergeiss написал(а):
Я разве что-то про DISTINCT говорил? Или про GROUP BY? Можно и DISTINCT использовать, конечно. Смотря какая задача у тебя стоит smile.gif

Спустя 1 минута, 29 секунд (1.05.2010 - 12:05) madcat написал(а):
GROUP BY тем более не подходит.. я сразу же и написал - Нет

Спустя 29 минут, 23 секунды (1.05.2010 - 12:35) sergeiss написал(а):
А если ты не хочешь решить поставленную тобой же задачу - то зачем спрашиваешь-то? Мне вот это совсем не понятно.

Спустя 5 минут, 6 секунд (1.05.2010 - 12:40) madcat написал(а):
Что значит нехочеш?! ты о чем вообще. Не пиши муть пожалуйста, давай только по делу. Если можеш помочь - помоги, если не можеш не пиши. Спасибо

Спустя 7 минут, 31 секунда (1.05.2010 - 12:47) waldicom написал(а):
Такое осчучение, что автор сам не знает, чего хочет, ибо:
- если нужно "... вывести сразу несколько данных из разных полей...", то по какому алгоритму образом автор хочет оставить только одно имя
- если нудны только имена, то не понятно, почему не подходит GROUP BY
- и почему не работает array_unique() ?

Спустя 9 минут, 54 секунды (1.05.2010 - 12:57) madcat написал(а):
есть таблица в ней несколько полей, например:
имя, бренд, цвет. Нужно вывести их в 3 столбика например:

Имя Бренд Цвет
фыв ыыц фыц
йцу фыч фыв
кцу фцу фыв

нужно без повторений.

Спустя 21 минута, 8 секунд (1.05.2010 - 13:18) MatrixGod написал(а):
почему array_unique() не помогает?

Спустя 47 секунд (1.05.2010 - 13:19) waldicom написал(а):
Без повторений по все трем полям? Т.е. в приведенном выше примере нужен вывод всех трех строк?

Спустя 1 минута, 46 секунд (1.05.2010 - 13:21) madcat написал(а):
Именно так. Вывод всех 3х строк. Тоесть ето же - вывод 3х полей из таблицы, только без повторений.

Спустя 10 минут, 18 секунд (1.05.2010 - 13:31) waldicom написал(а):
Цитата (madcat @ 1.05.2010 - 12:21)
Именно так. Вывод всех 3х строк. Тоесть ето же - вывод 3х полей из таблицы, только без повторений.

Не совсем понял, поэтому спрошу еще раз: без повторения по каким полям?
Если например будут такая таблица


Имя Бренд Цвет
Алекс Сони красный
Алекс Сони1 красный
Алекс Сони2 красный
Алекс Сони3 красный
Алекс Сони красный


я правильно понимаю, что результатом будет вывод четырех (из всего пяти) строк?

Спустя 11 минут, 19 секунд (1.05.2010 - 13:42) madcat написал(а):
Должно получится вот так:

Имя Бренд Цвет
Алекс Сони красный
Сони1
Сони2
Сони3


Спустя 3 минуты, 57 секунд (1.05.2010 - 13:46) waldicom написал(а):
Так стандартный SQL не может...
Он может только так:


Имя Бренд Цвет
Алекс Сони красный (появится только один раз, так как совпадения по всем трем полям)
Алекс Сони1 красный
Алекс Сони2 красный
Алекс Сони3 красный

Спустя 29 минут, 50 секунд (1.05.2010 - 14:16) MatrixGod написал(а):
madcat
я не пойму, тебе нужна помощь или где?
почему array_unique() не помогает?

или так:
array_unique($arr);

или так:
array_flip($arr);
array_unique($arr);

и все оки-доки...

Спустя 4 минуты, 21 секунда (1.05.2010 - 14:20) madcat написал(а):
так я понимаю что стандартный не может smile.gif) а вот я пытался делать это методом:


while($row = mysql_fetch_object($result))
{
$arr[$row->id] = array('name'=>$row->name,'color'=>$row->color,'brend'=>$row->brend);
}

foreach($arr as $ak => $av)
{
print_r(array_unique($av)); // Смотрел нету ли повторов (они есть)
... // вывод данных без повторов
}

Спустя 2 минуты, 23 секунды (1.05.2010 - 14:23) sergeiss написал(а):
Цитата (madcat @ 1.05.2010 - 13:40)
Не пиши муть пожалуйста, давай только по делу.

Если ты не понимаешь ответ (либо сам не до конца понимаешь, что тебе надо), то это не значит, что мои слова - муть.

Спустя 2 часа, 52 минуты (1.05.2010 - 17:15) madcat написал(а):
array_unique array_flip не помогают.. вот небольшой кусок print_r моего массива:

Array
(
...
[4] => Array
(
[0] => "Smartec"
)

[5] => Array
(
[0] => "MDC-6220VTD-20Н"
)

[6] => Array
(
[0] => "microdigital"
)

[7] => Array
(
[0] => "microdigital"
)

[8] => Array
(
[0] => "microdigital"
)

[9] => Array
(
[0] => "microdigital"
)

[10] => Array
(
[0] => "microdigital"
)
)


тоесть теперь мне нада вывести по одному название, без повторений.. например в столбик:

Smartec
MDC-6220VTD-20Н
microdigital

Спустя 10 минут, 1 секунда (1.05.2010 - 17:25) madcat написал(а):
прошу прощения за принесеные неудобства и компостирование мозга smile.gif
проблемаа решена!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.