ФорумРазработкаБазы данных → Мультизапрос? О_о

Мультизапрос? О_о

  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 17 июля 2009 г. 10:23

    Хз как обозвать то что мне надо сделать…

    Есть 2 таблицы в БД, в первой таблице есть поле `selected_items`, во второй таблице собственно лежат поочередно эти items, вот структура второй таблицы:

    item_id
    Item_description

    . Так вот в 1 таблице в поле `selected_items` записаны через запятую(?) items_id.
    Нужно сделать следующее: из 1 таблицы запросом тянем айди айтемов, следующим запросом нужно вытащить все item_description выбранных item_id, Вопрос, какой запрос должен быть?
    Ну или дайте запрос по которому гуглить =)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 10:26, спустя 2 минуты 43 секунды

    rider-sx, либо вложенный селект, либо join

    но главное пересмыслить архитектуру таблиц, показывай дамп структур полностью, для обоих таблиц с пояснениями!
    adw/0
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 17 июля 2009 г. 10:26, спустя 40 секунд

    join вроде гуглить
    Спустя 15 сек.
    Не успел
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 17 июля 2009 г. 10:36, спустя 9 минут 5 секунд

    если

    в 1 таблице в поле `selected_items` записаны через запятую(?) items_id.

    то одним запросом не получится, по-моему…
    надо вначале разобрать selected_items на отдельные id

    $selectetItemsArr = explode(',', $result['selected_items']);

    а уже потом выбрать

    'SELECT item_description FORM _имя_второй_таблицы_ WHERE item_id IN'.join(',', $selectetItemsArr ).')'
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 10:37, спустя 1 минуту 55 секунд

    Chiffa, гонишь, надо в его случае просто юзать вложенный селект и оператор IN

    Если ТС выложит дамп, покажу как именно
    adw/0
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 17 июля 2009 г. 10:38, спустя 33 секунды

    SELECT * FROM second_table as ST JOIN first_table as FT ON st.id IN (ft.selected_items) WHERE ft.id = N


    Наверное тебе надо так. Либо без использования JOIN перенести логику в WHERE. Запрос экспериментальный писал без данных и тестов.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 10:39, спустя 1 минуту 5 секунд

    disc, к чему тут join?)
    adw/0
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 17 июля 2009 г. 10:41, спустя 1 минуту 45 секунд

    не сообразила сразу что так можно)

    IN (ft.selected_items)

    у меня обычно разделителем "|", так что всегда приходилось в два приема
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 10:42, спустя 1 минуту 22 секунды

    Вообще ТС надо сделать по нормальному таблицы, а не велосипед на квадратных колесах
    adw/0
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 17 июля 2009 г. 10:48, спустя 6 минут

    Chiffa, Ты не думай что я настолько туп что не знаю как разбить строку ;)
    Спустя 18 сек.
    Дамп выложить или скопипастить ?
    Спустя 63 сек.
    Chiffa, Если бы это было оптимально так делать я бы и не создавал топика… как по одному тягать я вкурсе ;)
    Спустя 29 сек.
    А надо одним запросом желательно
    Спустя 90 сек.

    SELECT * FROM second_table as ST JOIN first_table as FT ON st.id IN (ft.selected_items) WHERE ft.id = N


    Наверное тебе надо так. Либо без использования JOIN перенести логику в WHERE. Запрос экспериментальный писал без данных и тестов.
    Не слабый запрос…. ниче не понял, пойдк погуглю на JOIN =)
    Спустя 133 сек.
    Кароче вот вам дамп, коментарии есть…

    rhlds.sql.
    Вы не можете отправить этот файл. Доступны только следующие типы файлов ods,odt,doc,pdf,txt,gif,jpg,png,mpg,zip,rar,tgz,tar,gz,xpi,jpeg,xyu,chm.
    Нормально так =)
    1. rhlds.zip (38)
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 17 июля 2009 г. 10:50, спустя 2 минуты 4 секунды

    rider-sx, эй, сорри, не хотела обидеть)))
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 17 июля 2009 г. 10:51, спустя 26 секунд


    rider-sx, эй, сорри, не хотела обидеть)))
    Да я и не обиделся =)
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 10:52, спустя 1 минуту 4 секунды


    rider-sx, эй, сорри, не хотела обидеть)))
    не ссы
    он обижается только после моих слов))
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 10:54, спустя 2 минуты 24 секунды


    SELECT * FROM xpre_plugins WHERE p_id IN (SELECT m_plugins_ms FROM xpre_members)
    adw/0
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 17 июля 2009 г. 10:57, спустя 3 минуты 9 секунд



    SELECT * FROM xpre_plugins WHERE p_id IN (SELECT m_plugins_ms FROM xpre_members)

    А можно пояснить как то? ))) Что ответит мускуль на запрос?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!