У меня есть пара запросов, которые, по моему мнению, могут быть реорганизованы и облегчены в mySQL, но я не уверен, как это сделать.Я делаю это программно, но я уверен, что я могу ускорить это.
По сути, получить идентификатор от пользователя, посмотреть в БД и получить идентификаторы строк, которые могут иметь похожие теги в качестве данного аргумента,чтобы исключить исходный аргумент и не включать повторяющиеся идентификаторы.
Есть ли способ сделать это в чистом sql?
вот мой текущий код:
def getRelatedEvents(self, memberId, eventId):
relatated_events = []
# first we get all the tags related to this event
for tag in self.db.query("select tagName from event_tags where eventId={}".format(eventId)):
# we iterate through each tag and find the eventIds for it
events = self.db.query("SELECT eventId from event_tags where tagName LIKE %s and eventId != %s LIMIT 3",
'%'+tag['tagName']+'%', eventId)
# we group them in a list, excluding ones that are already in here
for id in events:
if id['eventId'] not in relatated_events:
relatated_events.append(id['eventId'])
# we get the extra event info for each item in the related list and return
return [self.getSpecificEvent(memberId, item) for item in relatated_events]