Lightt
21.06.2015 - 14:47
Есть 3 таблицы
table1, user, table1_user.
Для этого заносим id из table1 в table1_user
Но как дальше строить запрос? У меня есть два варианта, и кажется оба будут очень долго работать, при больших объемах.
1. Мы проходимся циклом по таблице table1_user и ставим условие, вывести рандомную строку из table1, кроме таких id.
2. Мы рандомно находим строку, проверяем есть ли такой id в таблице table1_user если нет - выводим. Если есть, повторяем покатакого id не окажется.
Есть ли третий вариант? Что будет с большими данными? Если записей будет 100 000?
В первом варианте это надо 100 000 строк занести в условие. Во втором, в наихудшем варианте 100 000 запросов повторится.
AllesKlar
21.06.2015 - 15:11
Цитата |
table1, user, table1_user. Для этого заносим id из table1 в table1_user |
Вот между этими строками ты пропустил пару строк.
Что требуется-то?
_____________
[продано копирайтерам]
Lightt
21.06.2015 - 15:21
AllesKlarТребуется выводить рандомно строку из table1 и больше никогда её не показывать, для определенного пользователя.
Что то вроде такого.
SELECT * FROM `table1` WHERE NOT IN (".$table1_user['ID'].") ORDER BY RAND() LIMIT 1
AllesKlar
21.06.2015 - 17:37
таблица
table1_user:table1_id
user_id
SELECT * FROM table1 WHERE id NOT IN (SELECT table1_id FROM table1_user WHERE user_id = " . $user_id . ") ORDER BY RAND() LIMIT 1
_____________
[продано копирайтерам]
Lightt
22.06.2015 - 17:52
AllesKlar
Спасибо большое! Вроде сработало)
Цитата (Lightt @ 21.06.2015 - 11:21) |
AllesKlar и больше никогда её не показывать, для определенного пользователя. [/sql] |
Тут бы ещё одно условие добавить, которое будет отвечать за то, показывалось уже юзеру сообщение или нет.
_____________
минус, конечно, иногда полезен, но
плюс мне нравиться больше :)
Женский журнал - Жена сказала раскрутить сайт любой ценой (Sorry)
AllesKlar
23.06.2015 - 13:46
Xpund
Оно там уже какбэ интегрировано
_____________
[продано копирайтерам]