За последние 24 часа нас посетили 16480 программистов и 1562 робота. Сейчас ищет 2051 программист ...

Вывод повторяющихся строк

Тема в разделе "MySQL", создана пользователем Parallelogram, 19 апр 2016.

  1. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте, у меня задача стоит так. Вывести определенное количество строк, но если "phone" уже где-то использовался в таблице, то вывести все повторяющиеся строки. Пример:
    Код (Text):
    1. id | name | phone
    2. 1 | Серж | 7
    3. 2 | Коля | 3
    4. 3 | Даша | 7
    5. 4 | Валя | 2
    6. 5 | Миша | 2
    7. 6 | Лера | 4
    8. 7 | Сара | 2
    9. 8 | Миша | 2
    Должен выводиться так:
    Код (Text):
    1. [0]
    2.    [name] => Серж [id] => 1
    3.    [name] => Даша [id] => 3
    4. [1]
    5.    [name] => Коля [id] => 2
    6. [2]
    7.    [name] => Даша [id] => 3
    8.    [name] => Серж [id] => 1
    9. [3]
    10.    [name] => Валя [id] => 4
    11.    [name] => Миша [id] => 5
    12.    [name] => Сара [id] => 7
    13.    [name] => Миша [id] => 8
    14. [4]
    15.    [name] => Миша [id] => 5
    16.    [name] => Валя [id] => 4
    17.    [name] => Сара [id] => 7
    18.    [name] => Миша [id] => 8
    19. [5]
    20.    [name] => Лера [id] => 6
    21. [6]
    22.    [name] => Сара [id] => 7
    23.    [name] => Валя [id] => 4
    24.    [name] => Миша [id] => 5
    25.    [name] => Миша [id] => 8
    26. [7]
    27.    [name] => Миша [id] => 8
    28.    [name] => Миша [id] => 5
    29.    [name] => Сара [id] => 7
    30.    [name] => Валя [id] => 8
    Мне помогли и написали такой запрос, но он пишет только количество строк с похожими "phone"
    Код (Text):
    1. SELECT t0.`name`, t0.`phone`, t1.`count` FROM `table` t0
    2. inner join (SELECT `phone`, count(*) as `count` FROM `table` group by `phone`) t1 on t1.`phone`=t0.`phone`
    3. order by t0.id
    4. - - или - -
    5. select t.name, t.phone, sts.cname
    6. from table as t
    7. left join ( select count(distinct name) a cname, phone
    8.             from table group by phone) as sts on sts.phone =t.phone
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    нужно получить двумерный массив или просто отсортировать по полю phone?
     
  3. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Если возможно получить двумерный массив, то его.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ну просто отсортируй по phone, потом сформируй двумерный массив, всё понятно?
     
  5. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Что-то типа такого?
    Код (Text):
    1. select `phone`, `name`, count(*) as cnt from `p_masha` group by `phone`
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Так тебе нужно, откуда мы можем знать.
    Работает как нужно?