|
|
|
|
|
для: Trianon
(09.07.2009 в 00:42)
| | точно, сенкс :) | |
|
|
|
|
|
|
|
для: Keyses
(09.07.2009 в 00:35)
| | У Вас запрос явно с ошибкой синтаксиса.
Кроме того, тогда уж
mysql_query('
DELETE photo, photo_info
FROM photo
LEFT JOIN photo_info
ON photo_info.photo_id = photo.id
WHERE photo.id = '. $_POST['album']);
|
Хотя вполне можно обойтись двумя независимыми запросами. | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2009 в 10:01)
| | Почитав немного это:
For the first multiple-table syntax, only matching rows from the tables listed before the FROM clause are deleted. For the second multiple-table syntax, only matching rows from the tables listed in the FROM clause (before the USING clause) are deleted. The effect is that you can delete rows from many tables at the same time and have additional tables that are used only for searching:
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
|
Or:
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
|
These statements use all three tables when searching for rows to delete, but delete matching rows only from tables t1 and t2.
The preceding examples use INNER JOIN, but multiple-table DELETE statements can use other types of join allowed in SELECT statements, such as LEFT JOIN. For example, to delete rows that exist in t1 that have no match in t2, use a LEFT JOIN:
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
|
Сделал так:
<?php
MYSQL_QUERY('DELETE photo, photo_info
FROM photo
LEFT JOIN photo_info
ON photo_info.photo_id = '.$_POST['album'].'
WHERE photo.id = '.$_POST['album']);
?>
|
Всё прекрасно работает :) | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2009 в 11:06)
| | ммм... да, сильно стал отставать от MySQL. пора читать.... | |
|
|
|
|
|
|
|
для: GeorgeIV
(30.06.2009 в 10:48)
| | >Хочется довести до конца теоретические изыскания :-)
>Как я думаю - для соединения таблиц используется либо JOIN либо тета-соединение с WHERE, но одновременного использования я не встречал.
Никто не мешает на результирующую таблицу наложить через WHERE
а) дополнительные условия (описывающие не правила соединения, а фильтр отбора)
б) для внешнего соединения - обратное условие. Например, чтобы отобрать не сочетающиеся строки.
При JOIN USING используется, если список имен используемых столбцов в обеих таблицах совпадает
не всех, а лишь тех (или даже того в большинстве случаев) , по которому выполняется соединение.
Поскольку USING в MySQL претерпела относительно недавние довольно сильные семантические изменения Join Processing Changes in MySQL 5.0.12 то применяют эту достаточно удобную форму пока что с опаской, дабы избежать разночтения... | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2009 в 21:58)
| | Хочется довести до конца теоретические изыскания :-)
Как я думаю - для соединения таблиц используется либо JOIN либо тета-соединение с WHERE, но одновременного использования я не встречал. И при JOIN USING используется, если список имен используемых столбцов в обеих таблицах совпадает (рассматриваем вариант для двух объединяемых страниц), иначе используется ON с условиями соединения. | |
|
|
|
|
|
|
|
для: GeorgeIV
(29.06.2009 в 21:47)
| | >Trianon, а в принципе запрос вообще по моему неправильно записан - в списке USING используется список соединяемых столбцов
верно.
Может у автора и столбцы такие есть? Хотя это уже врядли...
>и используется он с JOIN вместо WHERE
с JOIN вместо запятой. WHERE тут не при чем
О чем я и написал. На названия столбцов внимание не обратил. | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2009 в 10:01)
| | Trianon, а в принципе запрос вообще по моему неправильно записан - в списке USING используется список соединяемых столбцов и используется он с JOIN вместо WHERE , или я ошибаюсь (мало работаю в последнее время с БД) | |
|
|
|
|
|
|
|
для: Keyses
(29.06.2009 в 01:57)
| | Можно обойтись и одним, если избавиться от идитской запятой между именами таблиц. | |
|
|
|
|
|
|
|
для: Keyses
(29.06.2009 в 01:57)
| | я бы сделал двумя | |
|
|
|
|