powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
19 сообщений из 19, страница 1 из 1
Помогите с запросом
    #33202109
Yury A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть следующая таблица:
+---------+--------+
| firm_id | tmc_id |
+---------+--------+
| 1 | 5 |
| 1 | 1 |
| 1 | 3 |
| 2 | 9 |
| 2 | 3 |
| 2 | 5 |
| 4 | 3 |
| 5 | 1 |
| 5 | 3 |
| 5 | 7 |
+---------+--------+
Как выбрать все „firm_id” у которых есть «tmc_id»=1 и «tmc_id»=3. Не используя вложенных запросов (т.к. в mysql-4.0.25 они не поддерживаются) ?
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202168
alexpogorelov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select firm_id from ? where tmc_id=1 and tmc_id=3
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202184
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexpogorelovselect firm_id from ? where tmc_id=1 and tmc_id=3

Не вернет ни одной записи.
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202229
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется так
Код: plaintext
1.
2.
3.
4.
SELECT Table1.firm_id
FROM Table1
where (Table1.tmc_id) between  1  and  3 
GROUP BY Table1.firm_id
HAVING (((max(Table1.tmc_id)= 3 )) AND ((min(Table1.tmc_id))= 1 ));
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202244
OraDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если tmc_id = 2 будет в таблице присутствовать, запрос будет работать ? Просто проверить не могу. А union в mysql есть ?
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202256
alexpogorelov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм тогда как насчет UNION?
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202268
alexpogorelov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так
Код: plaintext
1.
2.
select firm_id from table where tmc_id= 1 
union select firm_id from table where tmc_id= 2 
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202271
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraDBА если tmc_id = 2 будет в таблице присутствовать, запрос будет работать ? Просто проверить не могу. А union в mysql есть ?

Проверил, будет.
1 маленькая заметочка. Я проверяю в Акцессе. Но поскольку синтаксис примитивен, в мускуле тоже должно пахать. Не знаю тока, between в мускуле такой же или нет, но его всегда можно заменить на "...>=1 and ...<=3" .
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202296
alexpogorelov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как то задание невнятно толи фирма с 1 и 3 одновременно
толи и с 1 и с 3

мда неплохо бы к условию прикладывать результ планируемый
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202330
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак выбрать все „firm_id” у которых есть «tmc_id»=1 и «tmc_id»=3.

Код: plaintext
1.
2.
3.
SELECT firm_id, COUNT(DISTINCT tmc_id) FROM Table
WHERE (tmc_id= 1 ) OR (tmc_id= 3 )
GROUP BY firm_id
HAVING COUNT(DISTINCT tmc_id)= 2  
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202349
Yury A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexpogorelovкак то задание невнятно толи фирма с 1 и 3 одновременно
толи и с 1 и с 3 мда неплохо бы к условию прикладывать результ планируемый

В результате должны выбратся только "1" и "5"

Идея в том что этих условий может быть и больше (например «tmc_id»=1 и «tmc_id»=3 и «tmc_id»=5 и «tmc_id»=10), а выбрать нужно только те фирмы у которых есть все из перечисленных «tmc_id».

+---------+--------+
| firm_id | tmc_id |
+---------+--------+
| 1 | 5 |
| 1 | 1 |
| 1 | 3 |
| 1 |10 |
| 2 | 9 |
| 2 | 3 |
| 2 | 5 |
| 4 | 3 |
| 5 | 1 |
| 5 | 3 |
| 5 | 7 |
| 5 | 5 |
| 5 | 10 |
+---------+--------+
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202426
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yury A.[quot alexpogorelov]как то задание невнятно толи фирма с 1 и 3 одновременно
толи и с 1 и с 3 мда неплохо бы к условию прикладывать результ планируемый

В результате должны выбратся только "1" и "5"

Идея в том что этих условий может быть и больше (например «tmc_id»=1 и «tmc_id»=3 и «tmc_id»=5 и «tmc_id»=10), а выбрать нужно только те фирмы у которых есть все из перечисленных «tmc_id».
quot]

Ну тогда
Код: plaintext
1.
2.
3.
4.
Select firm_id 
from table
where tmc_id=<условие1> or .... or tmc_id=<условие N>
group by firm_id
having count(tmc_id)=<количество условий, перечисленных выше>
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202460
Yury A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RFT
Ну тогда
Код: plaintext
1.
2.
3.
4.
Select firm_id 
from table
where tmc_id=<условие1> or .... or tmc_id=<условие N>
group by firm_id
having count(tmc_id)=<количество условий, перечисленных выше>


Этот вариант не будет работать если таблица будет следующей:

+---------+--------+
| firm_id | tmc_id |
+---------+--------+
| 1 | 5 |
| 1 | 1 |
| 1 | 3 |
| 1 |10 |
| 2 | 9 |
| 2 | 3 |
| 2 | 3 |
| 2 | 5 |
| 4 | 3 |
| 5 | 1 |
| 5 | 3 |
| 5 | 7 |
| 5 | 5 |
| 5 | 10 |
+---------+--------+

в это случае в запрос попадет фирма "2"
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202461
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другой вариант -- пересеченем таблицы самой с собой по условию совпадения firm_id и условиями на tmc_id
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202464
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yury A. RFT
Ну тогда
Код: plaintext
1.
2.
3.
4.
Select firm_id 
from table
where tmc_id=<условие1> or .... or tmc_id=<условие N>
group by firm_id
having count(tmc_id)=<количество условий, перечисленных выше>


Этот вариант не будет работать если таблица будет следующей:

+---------+--------+
| firm_id | tmc_id |
+---------+--------+
| 1 | 5 |
| 1 | 1 |
| 1 | 3 |
| 1 |10 |
| 2 | 9 |
| 2 | 3 |
| 2 | 3 |
| 2 | 5 |
| 4 | 3 |
| 5 | 1 |
| 5 | 3 |
| 5 | 7 |
| 5 | 5 |
| 5 | 10 |
+---------+--------+

в это случае в запрос попадет фирма "2"

Тогда маленькая поправка:

Код: plaintext
1.
2.
3.
4.
Select firm_id 
from table
where tmc_id=<условие1> or .... or tmc_id=<условие N>
group by firm_id
having count([color=red]distinct[/color] tmc_id)=<количество условий, перечисленных выше>
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202469
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. вот.

Код: plaintext
1.
2.
3.
4.
Select firm_id 
from table
where tmc_id=<условие1> or .... or tmc_id=<условие N>
group by firm_id
having count(distinct tmc_id)=<количество условий, перечисленных выше>
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202513
Yury A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RFTТ.е. вот.
Код: plaintext
1.
2.
3.
4.
Select firm_id 
from table
where tmc_id=<условие1> or .... or tmc_id=<условие N>
group by firm_id
having count(distinct tmc_id)=<количество условий, перечисленных выше>


Да такой вариант прекрасно работает. Благодарю за оказанную помощь.

Но для развития событий можно еще добавить в условие что из запроса нужно исключить фирмы у которых tmc_id=7 и tmc_id=15...
...
Рейтинг: 0 / 0
Помогите с запросом
    #33202524
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RFTТ.е. вот.

Код: plaintext
1.
2.
3.
4.
Select firm_id 
from table
where tmc_id=<условие1> or .... or tmc_id=<условие N>
group by firm_id
having count(distinct tmc_id)=<количество условий, перечисленных выше>


М-да... Плагиат цветёт и пахнет...:(
...
Рейтинг: 0 / 0
Помогите с запросом
    #33203687
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yury A.
Но для развития событий можно еще добавить в условие что из запроса нужно исключить фирмы у которых tmc_id=7 и tmc_id=15...
Дык они и без того уже исключаются в WHERE.

2 Johnmen
Не расстраивайся. Раз такое решение одно, то к нему мы и пришли. Просто ты немного раньше, но этого не заметили:-)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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