За последние 24 часа нас посетили 68234 программиста и 1651 робот. Сейчас ищут 1014 программистов ...

Помогите сформировать запрос поиска

Тема в разделе "MySQL", создана пользователем ваяс, 10 окт 2012.

  1. ваяс

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

    С нами с:
    8 июн 2012
    Сообщения:
    99
    Симпатии:
    0
    Никак не могу сформировать верно запрос, подскажите пожалуйста как это осуществить
    Есть три таблицы
    Поиск осуществляется по условию ИЛИ
    Код (Text):
    1.  
    2. SELECT t.id, t.tn, t.user_id, c.email, u.login
    3. FROM ticket t LEFT JOIN customer_user c ON t.user_id = c.id  LEFT JOIN users u ON t.user_id = u.id
    4. WHERE t.tn LIKE 2012091810000016 OR c.email LIKE 'backahell@gmail.com'
    Вот он примерно такой, первое условие выполняется, но как сделать так что бы выполнялось и второе условие поиска?

    Добавлено спустя 9 минут 44 секунды:
    Т.е. если был написан email, то идет поиск по номеру и плюс из таблицы ticket появятся все тикеты которые соответствуют данному email, в таблице тикет есть только user_id, а email ищется из таблиц с пользователями (их две)
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Покажи SHOW CREATE TABLE ... всех таблиц, и распиши, какие поля из каких таблиц нужно вывести в результате запроса и по каким полям нужно искать
     
  3. ваяс

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

    С нами с:
    8 июн 2012
    Сообщения:
    99
    Симпатии:
    0
    Вот это я не совсем понял, я просто не использовал её никогда но попробовав сделать не понял что конкретно нужно.
    Я лучше так распишу
    1 таблица TICKET в ней есть нужные нам поля, а именно
    id | tn | user_id | customer_user_id

    2 таблица customer_user в ней есть нужные нам поля, а именно
    id | email | customer_id

    3 таблица users в ней есть нужные нам поля, а именно
    id | login

    Мне нужно сделать следующим образом
    Когда пользователь вводить в поле тикет примерно такой номер 2012091810000016 то в 1 таблице он ищется и выводит следующие данные
    id | tn | email_user | email_agent
    email_user берется на основе email из второй таблицы, а email_agent берется из третьей таблицы на основе login


    Когда пользователь вводить в поле email, то он ищется или во второй или в третьей таблице если находит данные во 2 таблице тогда берет значение поля customer_id и ищет значение в 1 таблице, а потом выводит все тикеты(номера) у которых будет равен customer_user_id, а если не нашел во второй ищет в третей (login это и есть email) берет id и сравнивает с user_id из первой таблицы

    Добавлено спустя 19 минут 26 секунд:
    Что то я пока писал до меня дошло ))
    Код (Text):
    1.  
    2. SELECT t.id, t.tn, c.email, u.login
    3. FROM ticket t LEFT JOIN customer_user c ON t.customer_user_id=c.email LEFT JOIN users u ON t.user_id = u.id
    4. WHERE t.tn LIKE 2012100110000036 OR c.email LIKE 'backahell@gmail.com'
    Вот так )))))
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну тогда остаётся рассказать про SHOW CREATE TABLE :) В общем, это такой запрос. Открываешь любой менеджер для работы с б.д. - можно phpMyAdmin или Navicat (да хоть MySQL Command Line Client) - и вводишь SQL-запрос:
    Код (Text):
    1. SHOW CREATE TABLE `ticket`;
    И он тебе показывает SQL-запрос, которым создаётся данная таблица.
     
  5. ваяс

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

    С нами с:
    8 июн 2012
    Сообщения:
    99
    Симпатии:
    0
    Спасибо. Вот жаль я этого не знал раньше. Ну есть же добрые люди, ещё раз спасибо )