|
|
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Есть две структурно одинаковые таблицы tb1(16836 записей) и tb2 (34105) там есть поле agent . Мне нужно выбрать все записи из tb2 несовпадающие по этому полю c tb1 Делаю запрос Код: sql 1. 2. 3. 4. 5. 6. И получаю целую гору значений (и то если LIMIT поставить) , а в дальнейшем выход за пределы памяти.... Всю голову разбил как???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:00:53 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
авторИ получаю целую гору значений а как надо если у тя их стопицот тысяч? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:07:58 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Курим маны по LEFT JOIN и использовании там WHERE table.field IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:15:20 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
ScareCrow, А что в WHERE начиркать чтоб выбрать только несовпадающие значения с tb1. Я вижу что получается образно произведение таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:15:55 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Akina, LEFT JOIN так же к добру не приводит .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:17:30 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelezДелаю запрос Код: sql 1. 2. 3. 4. 5. 6. Ага... Вот есть в одной таблице agent=1, и в другой agent=1. Будет ли выведена эта строка? Да, будет! почему? да потому что в другой таблице есть ещё запись с agent=2, для этой записи условие отбора выполняется. И запись выводится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:18:30 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelezLEFT JOIN так же к добру не приводит ....Правильно. Рук мало - надо ещё и голову приложить.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:19:27 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Akina, select `tb2`.* FROM `tb2` LEFT JOIN `tb1` ON `tb2`.`agent` <> `tb1`.`agent` WHERE `tb1`.`agent` IS NULL Пустой запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:25:50 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelezПустой запрос. Я же говорил про голову. Я даже объяснил, как работает hedgehogelez Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:44:15 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Akina, Это понятно! Но при LEFT JOIN любые результаты с tb1 в набор всяко должны попадать. Или я и тут не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 15:53:02 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Неправ. У тебя что? Код: sql 1. 2. Значит, все записи будут из таблицы tb2. А из tb1 - только те записи, которые отвечают условию связывания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 16:13:51 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
AkinaНеправ. У тебя что? Код: sql 1. 2. Значит, все записи будут из таблицы tb2. А из tb1 - только те записи, которые отвечают условию связывания. Да. Опечатался просто tb2 там. Вот же запрос!!! select `tb2`.* FROM `tb2` LEFT JOIN `tb1` ON `tb2`.`agent` <> `tb1`.`agent` WHERE `tb1`.`agent` IS NULL А в итоге! => Пустой набор (1,373 сек) По логике мускула у меня tb2 ПУСТАЯ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 16:37:58 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelezПо логике мускула у меня tb2 ПУСТАЯ!Нет, она "пустая" по вашей "логике", которую логикой-то язык назвать не поворачивается. Читайте ещё раз 14985946 , думайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 16:51:06 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
tanglir, Логика у меня достойная предложения юзать LEFT JOIN c WHERE IS NULL целенаправленный совет обнулить набор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 16:57:13 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelez`tb2`.`agent` <> `tb1`.`agent`= ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 17:31:51 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelezЛогика у меня достойная предложения юзать LEFT JOIN c WHERE IS NULLLJ + IS NULL это общепринятый чуть менее чем везде способ решения задач, подобных вашей а то, что вы начинаете выёживаться вместо того, чтобы разобраться, говорит... ну вы сами понимаете о чём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 19:22:46 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Смоляное Чучелко, ну вот, пришёл поручик и всё опошлил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 19:23:09 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
tanglir, ой, врядли допрёт.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 21:35:20 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Предыстория! :-) Есть вот такая таблица записей много ... Задача: Выбрать всех `agent` у кого в поле `calc_month` нет записей в таблице с 42 ... 53 ,но есть в поле `calc_month` < 42 Для выполнения сей задачи, были созданы два представления: авторCREATE VIEV `tb<42` AS ( select `sell`.* from `sell` where (`sell`.`calc_month` < 42 ) group by `sell`.`agent`) и аналогичное автор`tb>42` с where (`sell`.`calc_month` > 42 ) Кто нибудь русским языком объясните пожалуйста как мне из `tb<42` выбрать `agent` которых нет в `tb>42`. По перечитал все что предлагали, но "чуйка" подсказывает - " без толчка в мозг не разберешься! " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2013, 10:41:42 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelez, [NOT] EXISTS-подзапросы уже предлагали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2013, 10:55:42 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Теория с SELECT `tb<42`.* FROM `tb<42` LEFT JOIN `tb>42` ON `tb<42`.`agent` = `tb>42`.`agent` WHERE `tb>42`.`agent` IS NULL Так же не канает..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2013, 12:09:51 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelezбыли созданы два представления:авторCREATE VIEV `tb<42` AS (Не верю! авторнет записей в таблице с 42 ... 53 Код: sql 1. авторесть в поле `calc_month` < 42"есть"="у искомой записи"? тогда Код: sql 1. а если "есть записи о том же агенте, в которых имеется 42 в этом поле", то см. предыдущий кусок кода с exists. Надеюсь, запихнуть в where эти два условия самостоятельно сможете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2013, 12:26:27 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
tanglir, Только что запрос доработал с SELECT `tb<42`.* FROM `tb<42` LEFT JOIN `tb>42` ON `tb<42`.`agent` = `tb>42`.`agent` WHERE `tb>42`.`agent` IS NULL возвращено записей: 32559 (00:52:07) И это при 34105 в одном представлении и 14838 в другом записей. Жутко долго, ужас..... :-( Предложенный вариант тоже отработаю в течении дня... спс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2013, 12:43:16 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
hedgehogelezЖутко долго, ужастак чего вы хотели, это же вьюшки, а майскуле они, как правило , медленно работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2013, 13:10:06 |
|
||
|
Помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
tanglir, Если Вы это имели в виду: SELECT `sell`.* FROM `sell` WHERE `IF`(`sell`.`calc_month` < 42, 1, NOT EXISTS(SELECT 1 FROM `sell` WHERE `sell`.`agent` = `agent` and `sell`.`calc_month` between 42 and 54)) GROUP BY sell.agent то результат неверный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2013, 13:14:12 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38431401&tid=1835859]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 426ms |

| 0 / 0 |
