powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из двух таблиц по нескольким условиям
11 сообщений из 11, страница 1 из 1
Выборка из двух таблиц по нескольким условиям
    #40014226
Russ86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите, пожалуйста, с запросом

Имеются две таблицы:
table1 со столбцами product_id и lower_limit
table2 со столбцами product_id и variant_id

Условия следующие:
lower_limit > 1
variant_id = 102, 14211 и 25901

Нужно вывести строки из table1.
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014367
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Russ86, свой вариант покажете? Про JOIN читали?
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014414
Russ86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
paver,

Да, сейчас как раз изучаю. Пока не составил свой вариант.
Мне в итоге данные строки нужно будет удалить из table1 .
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014714
Russ86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока такой запрос составил, но не работает, как хотелось бы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT * FROM table1
	WHERE table1.lower_limit > 1
		AND
		EXISTS
		(SELECT *
			FROM table2
				WHERE table2.product_id = table1.product_id
				AND table2.variant_id IN (102, 14211, 25901));
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014740
Russ86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так, вроде составил корректный запрос, который удаляет строки из table1 по условиям из двух таблиц.

Код: sql
1.
2.
3.
DELETE table1 FROM table1 JOIN table2
	on table1.product_id = table2.product_id
		WHERE lower_limit > 1 AND variant_id IN (102, 14211, 25901);


Не подскажите, как-то можно увидеть строки, которые удаляются? Phpmyadmin показывает только количество удаленных строк.
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014790
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Russ86
вроде составил корректный запрос
Нет. Если в запросе используется более одного источника данных, то КАЖДОЕ имя поля должно иметь компоненту алиаса таблицы.

Russ86
как-то можно увидеть строки, которые удаляются?
Выполнить комплементарный SELECT. Само собой, до удаления...
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014813
Russ86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо за помощь,

AkinaНет. Если в запросе используется более одного источника данных, то КАЖДОЕ имя поля должно иметь компоненту алиаса таблицы.
Имеете ввиду так сделать, работает также:
Код: sql
1.
2.
3.
DELETE table1 FROM table1 JOIN table2
	on table1.product_id = table2.product_id
		WHERE table1.lower_limit > 1 AND table2.variant_id IN (102, 14211, 25901);



AkinaВыполнить комплементарный SELECT. Само собой, до удаления...
Делаю такой SELECT, количество показанных строк с удаленными совпадает. Это корректно?
Код: sql
1.
2.
3.
SELECT * FROM table1 JOIN table2
	on table1.product_id = table2.product_id
		WHERE table1.lower_limit > 1 AND table2.variant_id IN (102, 14211, 25901);
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014820
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Russ86
Это корректно?
Формально - нет.
SELECT может выводить дубликаты, а вот удалить два раза одну запись не получится. Добавьте DISTINCT.
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014825
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Russ86
Имеете ввиду так сделать, работает также
Ясен пень что так же.

Это - правило. Хотите - нарушайте и пишите без алиасов. Все проблемы - за Ваш счёт.

Например, в будущем меняется структура одной из таблиц, и в неё добавляется поле, чисто случайно с тем же именем, что и в первой таблице. А Вы потом получаете по полной программе за то, что из-за вполне легитимного изменения программный комплекс лёг - и не потому, что изменяющий не посмотрел (хотя и он виноват), а потому, что Вы в своё время поленились.
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40014835
Russ86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Согласен, что писать лучше по правилам. Просто такой пример нагуглился, я и взял его за основу.

Тем не менее, не понял, какие тут могут быть риски, ведь я же явно указываю в какой таблице делать DELETE и с какими таблицами делать JOIN. Если только поля в используемых таблицах станут с одинаковыми названиями, тогда возможны проблемы.
...
Рейтинг: 0 / 0
Выборка из двух таблиц по нескольким условиям
    #40015186
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

оно просто вывалится с ошибкой "хде мои алиасы?" и только. Поднимается добавлением оных, в т.ч. с применением grep + regexp. :)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из двух таблиц по нескольким условиям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]