За последние 24 часа нас посетили 16655 программистов и 1681 робот. Сейчас ищут 839 программистов ...

выборка одинаковых значений из таблицы

Тема в разделе "MySQL", создана пользователем siuzi_drum, 18 янв 2013.

  1. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте!
    Вопрос таков:
    есть таблица, которая естественно пополняется (таблица переписки между пользователями)
    структура такова -
    Код (Text):
    1.     id       date       time         from             to
    2.     35  18-01-2013  13:18:46    siuzi_drum1       test      
    3.     39  18-01-2013  13:42:05    test             siuzi_drum1            
    4.     40  18-01-2013  13:43:05    siuzi_drum1       test          
    5.     41  18-01-2013  13:44:31    test             siuzi_drum1            
    6.     42  18-01-2013  14:47:10    redakt22or    siuzi_drum1        
    7.     43  18-01-2013  14:47:27    redakt22or    siuzi_drum1      


    как составить sql запрос, чтобы выводилась переписка между test и siuzi_drum1 ?

    Я уже всю голову сломал.......... это ужс..

    ошибки....
    Спасибо =)
     
  2. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    я хз как лучше, с sql дружу не особо, но я бы использовал UNION
     
  3. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    > Я уже всю голову сломал.......... это ужс..
    Если это ужас, то я папа римский ;)

    Код (Text):
    1. select * from table
    2. where (from = 'test' and to = 'siuzi_drum1') or (from = 'siuzi_drum1' and to = 'test')
     
  4. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    Спасибо вам ребята!
    Я порпробовал
    Код (Text):
    1. select * from table
    2. where (from = 'test' and to = 'siuzi_drum1') or (from = 'siuzi_drum1' and to = 'test')
    но он выдал ошибку запроса.
    использовал union
    Код (Text):
    1.  
    2. SELECT * FROM $table_mess_name WHERE `from` = '$mylogin'  AND `to` = '$mes[from]'  UNION SELECT * FROM $table_mess_name WHERE `from` = '$mes[from]' AND `to` = '$mylogin' ORDER BY id"
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    в первом запросе ошибка в выборе имени поля: from это служебное слово - сам-то не замечаешь?
    пиши только `from`, и вообще лучше переименуй, например from_user

    Добавлено спустя 8 минут 40 секунд:
    нафиг не нужно, но просто для поддержания разговора:
    добиться максимальной эффективности, можно с целочисленными id пользователей. позволяем себе некоторую избыточность
    пусть у нас будет два дополнительных поля:
    id1 INT // сюда помещаем min(from_id, to_id)
    id2 INT // сюда помещаем max(from_id, to_id)
    создаем составной индекс по двум полям (id1, id2)
    перед тем как из скрипта запросить переписку, вычислим min и max ID интересующих нас пользователей и пишем
    Код (Text):
    1.  
    2. SELECT *
    3. FROM talk_table
    4. WHERE id1=:min_id AND id2=:max_id
    вуаля!
     
  6. siuzi_drum

    siuzi_drum Активный пользователь

    С нами с:
    18 янв 2012
    Сообщения:
    14
    Симпатии:
    0
    id пользователей хранятня в другой таблице cms MODx
    их еще одним сквелем выводить надо...

    Я примерно понял Вас, спасибо большое.
    Для меня пока это тяжело дается.
    Я не понял как прочитать запись id1=:min_id например, откуда оно появилось
    У нас было поле id1, в него пишется вычисление
    Код (Text):
    1. min(5,2) // то есть 2
    в поле id2 пишется вычисление
    Код (Text):
    1. max(5,2) // то есть 5
    id1=:min_id ?
    откуда появилась эта переменная?
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    да ниоткуда! замените на id1=$min_id если так в вас лучше входит.
    повторяю:
    Добавлено спустя 4 минуты 49 секунд:
    Я полагаю независимо от того какую CMS вы портите, там на самом деле под рукой ЕСТЬ нужные id. Скорее из ID вычислены имена пользователей, а не наоборот. Просто надо почитать внимательно.