За последние 24 часа нас посетили 17592 программиста и 1623 робота. Сейчас ищет 1661 программист ...

Вставка результата одного селекта внутри другого SQL-запроса

Тема в разделе "PHP и базы данных", создана пользователем Белый волк, 12 авг 2008.

  1. Белый волк

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

    С нами с:
    11 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    PHP:
    1. mysql_query("UPDATE variable SET value = 's:3:\"011\";' WHERE name='theme_default'");
    Как в вышеизложенном скрипте сделать так, чтобы вместо 011 вставлялось результат следующей выборки
    [sql]select theme from users where name='editor'[/sql]
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Нельзя в одном запросе делать вставку/обновление и выборку данных.
     
  3. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    только если выборка и вставка происходят в одной таблице

    Белый волк
    выборка
    [sql]select theme from users where name='editor'[/sql]
    должна возвращать только одно значение, иначе будет ошибка.

    Но ты тут ещё, видимо, хочешь результат сериализовать, что всё же лучше сделать стандартным http://php.net/serialize
    Сделай 2 запроса (выборка и обновление) и не заморачивайся
     
  4. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Белый волк
    Для SQL есть специальный тег. Не надо выделять жирным и, тем более, увеличивать шрифт: желание отвечать на вопрос лично у меня пропадает.

    [sql]UPDATE variable, users SET variable.value=concat('s:3:"', users.theme, '";') WHERE variable.name='theme_default' AND users.name='editor' AND 'условие связи variable и users';[/sql]

    Много чего можно делать - читайте мануал по SQL.
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Можно - смотри IN, ANY

    AlexGousev
    Я писал насчет того варианта, который он спрашивал, а именно - вложенный запрос с селектом внутри.
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Kreker
    мы всё ещё про [sql]UPDATE variable SET value = (SELECT …)[/sql]или уже про условие в WHERE ?
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Luge
    Смотря как обновляет. Может ему нужно обновить одну строку, тогда ты прав - вложенный должен возвращать 1 значение. А он может обновлять их множество, тогда и возвращаемых значений из внутреннего может быть тоже множество. Но это все по поводу вложенных запросов. Но в данном случае такую операцию этими запросами не провести.
     
  8. Белый волк

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

    С нами с:
    11 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    В моем случае нету условии связки между variable и users !
    Вышеуказанный скрипт будет работать?
     
  9. Белый волк

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

    С нами с:
    11 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    select theme from users where name ='editor' возвращет одну строчку!