|
|
|
Правильно ли я применяю такую конструкцию?
|
|||
|---|---|---|---|
|
#18+
Есть родительская таблица t1 , в которой поле person показывет, кто может редактировать эту запись и записи в дочерней таблице t2 Пусть это выглядит так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Далее, допустим, происходит UPDATE значения amount в таблице t2, где snum=$snum . Надо выполнить update, но такой, чтобы значение person в родительской таблице t1 было "наше", скажем, $person . Я составил такой запрос: Код: sql 1. Потестил, значения меняются, как и ожидал. Но я что-то плохо понимаю саму такую конструкцию. Как она работает? Я думаю, так: Ищется строка в таблице, для которой выполняется update, с a.snum=$snum. Update выполняется, если в таблице FROM находится хотя бы одна строка. В таком случае, откуда берется связка таблицы a и b? Делал так: t1 idnameperson1'яблоки'12'груши'2 t2 snum amountid115122013302 Код: sql 1. меняет вторую строку (как и ожидалось) Код: sql 1. не меняет вторую строку (как и ожидалось) Вопрос: как это работает? Ведь если исходить из такой логики - что FROM <таблица для update>, <t2 LEFT JOIN t1 USING(id)> условие для второго запроса также должно выполняться, т.к. для каждой строки таблицы (перечислены через запятую) берутся все строки следующей таблицы. Но, похоже, не так -- Россия - отличная страна! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2016, 21:46 |
|
||
|
Правильно ли я применяю такую конструкцию?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. лучше так UPDATE t2 a SET amount = $amount FROM t2 a LEFT JOIN t1on a.id = t1. id WHERE a.snum = $snum AND person = $person; или даже так UPDATE t2 SET amount = $amount WHERE snum = $snum AND exists( select * from t1 where person = $person and t1. id = t2. id); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 11:36 |
|
||
|
|

start [/forum/topic.php?fid=53&gotonew=1&tid=1997534]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 377ms |

| 0 / 0 |
