У меня есть две таблицы в базе данных:MYSQL: Выбор записей по отношению к нескольким строкам другой таблицы
- записи (ID, расстояние, статус [...])
- entriesmeta (ID, entry_id, metakey, metavalue)
До сих пор я выбираю записи, как это:
SELECT ID,
distance
FROM entries
WHERE status = '2' HAVING distance < 30
ORDER BY distance
LIMIT 20
Теперь вторая таблица содержит Данные такого рода:
ID | entry_ID | metakey | metavalue
1 | 137 | service | 13
2 | 137 | service | 7
3 | 137 | service | 76
4 | 84 | service | 23
etc.
Записи в первой таблице, рестораны, услуги, во второй таблице услуг, которые они предлагают. То, что я пытаюсь на некоторое время, заключается в следующем: Создайте форму поиска в формате HTML, которая позволяет пользователям выбирать определенные службы с помощью флажков. Затем запрос MYSQL должен выбрать все записи, которые предлагают ВСЕ эти сервисы. Пока форма поиска помещает выбранные службы в массив (7,13,9,27).
Моя проблема заключается в поиске правильного запроса к базе данных. Он должен соответствовать полю metavalue с помощью checkbox-array и затем выбирать все записи из первой таблицы, которые предлагают все эти службы. Я экспериментировал с «LEFT JOIN ON entries.ID = entriesmeta.entry_ID» и несколькими предложениями WHERE, но не имел успеха. Интересно, может ли кто-то помочь.
Благодарим вас заблаговременно - и извините за мой плохой английский.
можете ли вы опубликовать заявление о запросе, которое у вас есть на данный момент? – Maximus2012
вы можете использовать это http://www.sqlfiddle.com/#!2/aef18/2 (примечание: SQLFiddle Demo основывается на андерсере от пользователя 491243), чтобы оптимизировать, когда вы ожидаете большого количества записей в обеих таблицах и удалить необходимость «Использовать временные, используя filesort», что действительно являются убийцами производительности для MySQL, потому что сортировка может быть выполнена на диске –