За последние 24 часа нас посетили 18518 программистов и 1619 роботов. Сейчас ищут 1230 программистов ...

обьединить 2 одинаковых поля из разных таблиц в одно

Тема в разделе "MySQL", создана пользователем CNSbrain, 13 ноя 2008.

  1. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    Добрый вечер,

    проблема заключается в следующем:

    есть 2 таблицы: tab1 и tab2
    у обеих таблиц есть одинаковое поле: `name`
    в таблицах данные в поле `name` разные

    Вопрос:

    возможно их объединить в 1 вывод средствами mysql ?


    н-р,
    если мы имеем:

    -----------
    tab1
    -----------
    name:
    -----------
    djon
    anny



    tab2
    -----------
    name:
    -----------
    djin
    antony




    вывод должен быть:

    tab
    -----------
    name
    -----------
    djon
    anny
    djin
    antony
     
  2. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    SELECT name FROM tab1
    UNION
    SELECT name FROM tab2

    Ъ?
    у меня дежавю. Это уже когда-то было.
     
  3. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    не подскажите, какая версия mysql нужна для union?
     
  4. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    поставил 5.1 union заработал!
    до этого стоял mysql версии 3.22...

    благодарю за помощь)
     
  5. Mete0

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

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    5.1 RC... Ставь 5.0.x в ней UNION то же работает :)
     
  6. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    еще вопрос)
    к примеру если во второй таблице имена начинаются с '.'(символ точки)

    нужно совместить эти таблицы отсортировав по алфавиту, без учета этой точки.. такое возможно? (имена м.б. в кириллице)


    н-р,
    если мы имеем:

    -----------
    tab1
    -----------
    name:
    -----------
    djon
    anny



    tab2
    -----------
    name:
    -----------
    .djin
    .antony




    вывод должен быть:

    tab
    -----------
    name
    -----------
    anny
    .antony
    djon
    .djin
     
  7. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  8. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    благодарю,

    интересует алгоритм...

    логика подсказывает что то вроде:

    1) вырезать точку в именах из второй таблицы
    2) отсортировать по алфавиту
    3) вывести имена с точкой для второй таблицы

    только как тут обойтись 1ним запросом... ума не приложу :?:

    первый пункт решается:

    SELECT name FROM tab1
    UNION
    SELECT Replace(name, '.', '') FROM tab2

    это при условии что в имени точек кроме как первой быть недолжно(это действительно так)

    как быть с остальными :?:
    если вообще в том направлении мыслю)
     
  9. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    м.б. в mysql такого делать нельзя?
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    А что, с точкой нормально не сортируется?

    [sql]SELECT `name`, REPLACE(`name`, '.', '') as `s_name` FROM `tbl2` ORDER BY `s_name`[/sql]
    Если в задании опечатка, то так:
    [sql]SELECT `tbl1`.`name`, REPLACE(`tbl2`.`name`, '.', '') as `s_name` FROM `tbl1`, `tbl2` ORDER BY `s_name`[/sql]
     
  11. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    во второй таблице сортируються как надо, но при соединении с первой таблицей совсем нето получается :(


    так точно, есть опечатка:

    1) вырезать точку в именах из второй таблицы
    2) соединить эти имена с именами первой таблицей
    3) отсортировать по алфавиту
    4) поставить точки обратно на имена из второй таблицы

    при условии что имена из первой таблицы могут соответствовать именам второй таблицы(без точки)
    т.е. имена могут повторяться, но одни будут с точкой, а другие нет
     
  12. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    эх, а так все хорошо начиналось..

    ребята эни хелп плиз!

    может быть mysql для такого запроса недостаточно гибок?
    если так, прийдетьсся искать другое решение(
     
  13. CNSbrain

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

    С нами с:
    13 ноя 2008
    Сообщения:
    13
    Симпатии:
    0
    актуально