powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / связующая таблица
2 сообщений из 2, страница 1 из 1
связующая таблица
    #32068657
bookworm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Вот - не могу никак в одном запросе все сделать.
Первая таблица - номера книг и названия книг, вторая - номера авторов и имена авторов. Положим есть третья связующая (две других) таблица. В ней строки (номера книг и номера авторов)
1, 4
1, 5
2, 3
2, 5
т.е. от обеих таблиц к ней связи "один ко многим" - "многим" - с ей стороны
(если ничего не путаю).
т.е. у книг 1 и 2 есть несколько авторов и эти
авторы могут быть у любой из книг...
хм..
теперь если я выберу

select * from table1, table2, table3
where table1.id=table3.id_of_table1
and table2.id=table3.id_of_table2 and ( (table3.id_of_table2=4) OR
(table3.id_of_table2=5))

вернутся толко те, у которых или 4 или 5 или оба автора.

а вот как по AND???
чтобы вернулись только те, у которых и 4 и 5 есть!

КАК БЫТЬ?
ЗЫЖ Может быть вложенные запросы? Но тут не пройдет - у меня mysql.
...
Рейтинг: 0 / 0
связующая таблица
    #32068820
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая связь называется многие-ко-многим
Тебе надо три таблицы!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
BOOKS
| BK_ID | TITLE |

AUTHORS
| AU_ID | NAME |

BOOKS-AUTHORS
| BK_ID | AU_ID |

SELECT BK.TITLE, AU.NAME
FROM BOOKS BK, AUTHORS AU, BOOKS_AUTHORS BA
WHERE
BA.BK_ID=BK.BK_ID
AND
AU.AU_ID=BA.AU_ID
ORDER BY BA.TITLE, AU.NAME
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / связующая таблица
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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