За последние 24 часа нас посетили 17380 программистов и 1650 роботов. Сейчас ищут 888 программистов ...

Мультитабличный поиск по БД

Тема в разделе "PHP и базы данных", создана пользователем dobs, 8 янв 2009.

  1. dobs

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

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Вопрос чтоб сделать поиск по нескольким таблицам в БД то надо сделать несколько селектов или как, плиз приведите пример, второй день с данной проблемой **ся и нигде нет нормальной статьи как сделать поиск по нескольким таблицам...
    Спасибо!
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    UNION

    http://yandex.ru/yandsearch?rpt=rad&text=mysql%20UNION

    [sql]

    SELECT
    id1 ad ID,
    text1 as TEXT
    FROM
    t1
    WHERE
    text1 LIKE '%php'

    UNION

    SELECT
    id2 ad ID,
    text2 as TEXT
    FROM
    t2
    WHERE
    text2 LIKE '%php'

    [/sql]


    [sql]


    (SELECT a FROM table_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
    UNION
    (SELECT a FROM table_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10)
    ORDER BY a;


    [/sql]
     
  3. dobs

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

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Большое Спасибо буду пробовать :) Работает!!!!!! [​IMG]
     
  4. dobs

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

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Столкнулся с такой траблой, пробую выполнить

    [sql]SELECT 'news' as `razdel`, news.name,news.text, news.id FROM core_news news WHERE news.activ=1 AND news.name LIKE '%временем%' OR news.text LIKE '%временем%' UNION SELECT 'files' as `razdel`, files.name,files.text, files.id FROM core_files files WHERE files.activ=1 AND files.name LIKE '%временем%' OR files.text LIKE '%временем%' UNION SELECT 'pages' as `razdel`, pages.name,pages.text,pages.rewrite, pages.id FROM core_pages pages WHERE pages.name LIKE '%временем%' OR pages.text LIKE '%временем%' OR pages.rewrite LIKE '%временем%'[/sql]
    Пишет ошибку #1222 - The used SELECT statements have a different number of columns

    Убераю rewrite тобиш такой запрос
    [sql]SELECT 'news' as `razdel`, news.name,news.text, news.id FROM core_news news WHERE news.activ=1 AND news.name LIKE '%временем%' OR news.text LIKE '%временем%' UNION SELECT 'files' as `razdel`, files.name,files.text, files.id FROM core_files files WHERE files.activ=1 AND files.name LIKE '%временем%' OR files.text LIKE '%временем%' UNION SELECT 'pages' as `razdel`, pages.name,pages.text, pages.id FROM core_pages pages WHERE pages.name LIKE '%временем%' OR pages.text LIKE '%временем%'[/sql]
    - Работает


    Так тоже работает
    [sql]SELECT 'pages' as `razdel`, pages.name,pages.text, pages.id FROM core_pages pages WHERE pages.name LIKE '%временем%' OR pages.text LIKE '%временем%'[/sql]


    П.С. rewrite - с индексом...


    Подскажите что у меня не так а то чет мне в голову ничего не приходит...


    Дамп
    [sql]
    CREATE TABLE `core_pages` (
    `id` int(3) NOT NULL auto_increment,
    `name` varchar(100) NOT NULL default '',
    `rewrite` varchar(100) NOT NULL default '',
    `meta_d` varchar(255) NOT NULL default '',
    `meta_k` varchar(255) NOT NULL default '',
    `data` date NOT NULL default '0000-00-00',
    `text` text NOT NULL,
    `autor` varchar(30) NOT NULL default '',
    PRIMARY KEY (`id`),
    KEY `name` (`name`),
    KEY `rewrite` (`rewrite`),
    FULLTEXT KEY `text` (`text`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;[/sql]
     
  5. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Переведи ошибку, тебе черным по белому пишут в чем дело.
     
  6. dobs

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

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    спс буду химичить