В некотором фоне у меня есть набор данных, которые представляют ингредиенты алхимии и их эффекты от Skyrim. Если вы не знакомы с этим, вы можете комбинировать 2-4 ингредиента, чтобы создать зелье. Каждый ингредиент имеет 4 эффекта. Если какие-либо эффекты между ингредиентами одинаковы, он будет делать этот вид зелья. Я определил это как многие-ко-многим и настроить свои таблицы следующим образом:Новое в MySQL, которое ищет запрос о взаимоотношениях многих-ко-многим
ингредиенты: ing_id (ключ), ing_name (другие дополнительные данные)
эффектов: eff_id (ключ) , eff_name
ing_eff_xref: eff_id, ing_id
Я хотел бы ввести 2 или более доступные ингредиенты и возвращаю возможные комбинации, не зная, что эффекты. Мой опыт работы с sql в значительной степени ограничен phpmyadmin и запросами простого выбора. Я думаю, что мои вопросы: правильно ли это структурировать таблицы для этого типа отношений, нужно ли устанавливать внешние ключи, если я не планирую обновлять таблицы, и есть ли запрос, который может принимать набор ing_names и возвращать только eff_names, которые пересекаются?
Вот туздЫшпр из БД, если кому-то интересно: http://dl.dropbox.com/u/59699040/alchemy_db.sql
Спасибо, что вернулись ко мне. Второй запрос, безусловно, является приемлемым решением. Эффекты не складываются, но может быть больше одного эффекта, который соответствует, поэтому я могу просто вытащить любые эффекты с числом больше 1 в php. Я не уверен, что происходит в первом запросе, но я думаю, что мне понадобится противоположность SELECT DISTINCT, если такая вещь существует. Спасибо за помощь, это был глаз. – pdizz
Эй, рад помочь! Это было весело для работы. – Aaron
Теперь, когда я знаю, что искать, я нашел эту статью о поиске дубликатов http://www.petefreitag.com/item/169.cfm, похоже, я мог добавить HAVING (COUNT (email)> 1), но используя eff_name для сузить. – pdizz