За последние 24 часа нас посетили 20396 программистов и 1101 робот. Сейчас ищут 766 программистов ...

MySQL запрос

Тема в разделе "MySQL", создана пользователем Johnson, 17 май 2009.

  1. Johnson

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

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Задача такая:
    в базе данных есть две таблицы, в этих таблицах есть одно одинаковое по смысле поле USER.
    Так вот, каким образом можно выбрать значения, чтобы исключить дубляж значаний?
    То есть, в таблицах есть значения:
    Код (Text):
    1. Таблица №1 |  Таблица №2  |
    2.  user              user              
    3.        1                    2              
    4.        3                    3              
    5.        8                    7              
    6.        9                    8              
    7.       15                    9
    как из двух таблиц, сформировать массив заначений без дублирования: 1,2,3,7,8,9,15?

    Заранее спасибо за помощь!
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Код (Text):
    1. SELECT DISTINCT `user` FROM `table`
    или
    Код (Text):
    1. SELECT `user` FROM `table` GROUP BY `user`
    В последнем варианте при учете строк через count будут выведены количества дублирующихся значений, в первом случае - нет.
     
  3. Johnson

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

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Из одной таблицы я знаю как выбрать.
    Вопрос выборки из двух таблиц.

    Как вариант:
    из
    Код (Text):
    1. table_1 выбрать поле user_1
    а из
    Код (Text):
    1. table_2 выбрать поле user_2
    и из них составить один массив без дублей.
     
  4. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    CREATE TABLE IF NOT EXISTS `test1` (
    `id` int(11) NOT NULL,
    `num` int(11) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    INSERT INTO `test1` (`id`, `num`) VALUES
    (1, 11),
    (2, 12),
    (5, 15);

    CREATE TABLE IF NOT EXISTS `test2` (
    `id` int(11) NOT NULL,
    `num` int(11) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    INSERT INTO `test2` (`id`, `num`) VALUES
    (2, 22),
    (3, 23),
    (5, 25);



    SELECT test1.id,test1.num,test2.num FROM test1 LEFT JOIN test2 ON (test1.id = test2.id) UNION SELECT test2.id,test1.num,test2.num FROM test1 RIGHT JOIN test2 ON (test1.id = test2.id)

    id num num
    1 11 NULL
    2 12 22
    5 15 25
    3 NULL 23


    (c) http://dev.mysql.com/doc/refman/5.0/en/join.html