Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите переделать SELECT в DELETE
 
 автор: sl1p   (26.01.2010 в 02:48)   письмо автору
 
 

    SELECT *
    FROM
        blocks a,
        blocks_content b
    WHERE
        a.type = 1 AND
        a.id = b.id_block AND 
        b.content = 7 # deleted topic


нужно по тем же условиям удалить.

  Ответить  
 
 автор: Trianon   (26.01.2010 в 03:03)   письмо автору
 
   для: sl1p   (26.01.2010 в 02:48)
 

Не-не-не Дэвид Блэйн.
Сперва избавьте от запятой.

  Ответить  
 
 автор: sl1p   (26.01.2010 в 03:06)   письмо автору
 
   для: Trianon   (26.01.2010 в 03:03)
 

ыыы)

Ну какбе не понятно как убрать :)

Я вот думаю, как лучше сделать, удалить сначала из `blocks`,
а потом удалить из `blocks_content` (DELETE ... WHERE NOT EXISTS) ?

Или как "по умному" посоветуете?

  Ответить  
 
 автор: Trianon   (26.01.2010 в 09:23)   письмо автору
 
   для: sl1p   (26.01.2010 в 03:06)
 

a LEFT JOIN b ON a.id = b.id_block или как-то так.
Вот от этих ньюансов и зависит какие строки в конечном итоге будете удалять.

  Ответить  
 
 автор: sl1p   (26.01.2010 в 10:00)   письмо автору
 
   для: Trianon   (26.01.2010 в 09:23)
 

.

  Ответить  
 
 автор: sl1p   (26.01.2010 в 10:00)   письмо автору
 
   для: Trianon   (26.01.2010 в 09:23)
 

ну да можно и так если подходит..

просто удалить 2 строки из blocks и blocks_content


а от каких нюансов?
смотря куда присоединять(RIGHT, INNER) или как?)

так чтото не получается :[
            SELECT *
            FROM
                blocks a
            LEFT JOIN blocks_content b ON a.id = b.id_block
            WHERE
                a.type = 1 AND
                b.content = 7 # deleted topic

  Ответить  
 
 автор: Trianon   (26.01.2010 в 10:59)   письмо автору
 
   для: sl1p   (26.01.2010 в 10:00)
 

>просто удалить 2 строки из blocks и blocks_content

Ньюансы касаются ситуаций, когда в таблицах не находится соответствия, и решают вопрос, а показывать/удалять ли строку в таблице, которая не прикреплена к строке в другой таблице?

Таки да INNER, LEFT, RIGHT вид JOINа
и размещение доп.условий - в WHERE или в ON .

А удаление достигается заменой первой строки
SELECT *
на строку
DELETE список_таблиц
(из которых удаляются строки)

  Ответить  
 
 автор: sl1p   (26.01.2010 в 11:09)   письмо автору
 
   для: Trianon   (26.01.2010 в 10:59)
 

да с селектом я дэбчик, согласен))

вот так?

DELETE a, b
FROM blocks a
LEFT JOIN blocks_content b ON a.id = b.id_block
WHERE a.type = 1 AND b.content = {$id}

  Ответить  
 
 автор: Trianon   (26.01.2010 в 11:14)   письмо автору
 
   для: sl1p   (26.01.2010 в 11:09)
 

>вот так?

[сочувственно]
не получается?

  Ответить  
 
 автор: sl1p   (26.01.2010 в 11:18)   письмо автору
 
   для: Trianon   (26.01.2010 в 11:14)
 

получается, решил переспросить, вдруг что-то не так:)
не всегда правильно что получается :)
спасибо Вам большое(как обычно:)!

  Ответить  
 
 автор: Trianon   (26.01.2010 в 11:37)   письмо автору
 
   для: sl1p   (26.01.2010 в 11:18)
 

пожалуйста...

вот это удручает больше всего.
Решил не заглядывать в мануал перед вопросом, вдруг не пойму...
Спросил... получил ответ. Не уверен, правильно ли понял - возник интерес не "что значит тот или иной фрагмент кода", а "заработает ли вот так".
Интерес возник - в мануал с проверкой не полез, вдруг не пойму.
- опыт решил не ставить, вдруг получится, а выйдет неправильно.
- лучше спросить.

А если неправильно ответят?
Я ж тоже ошибаться умею.

  Ответить  
 
 автор: sl1p   (26.01.2010 в 11:40)   письмо автору
 
   для: Trianon   (26.01.2010 в 11:37)
 

Я мануал смотрел, но так ничего так не нашёл( ну или не понял мб)..
..видел про LEFT JOIN и т.д., но как его применить так и не понял..

Я всегда сначала лезу в мануал.. и не просто чтобы совесть успокоить, а действительно за ответом..
То что я там не нахожу ответа уже отдельная тема :)

  Ответить  
 
 автор: Trianon   (26.01.2010 в 12:47)   письмо автору
 
   для: sl1p   (26.01.2010 в 11:40)
 

>Я мануал смотрел, но так ничего так не нашёл( ну или не понял мб)..

и ни одного вопроса по непонятому не задали.

>..видел про LEFT JOIN и т.д., но как его применить так и не понял..

эта штука - формула из нескольких таблиц, соединенных цепочкой операций JOIN-ON, называется - табличным выражением. А на английском - table_reference . И в синтаксисе оно присутствует, просто определяется в разделе SELECT ( а может - JOIN )

>Я всегда сначала лезу в мануал.. и не просто чтобы совесть успокоить, а действительно за ответом..
>То что я там не нахожу ответа уже отдельная тема :)

Так а на что народ? Так а я на что?
Нешто я не отвечу, если вопрос по непонятке какой будет, а не потому что "не работает"?
Собственно, камень не в Ваш персональный огород, просто случай так сказать классический.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования