[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с логикой
Lightt
Есть 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
Цитата
table1, user, table1_user.
Для этого заносим id из table1 в table1_user

Вот между этими строками ты пропустил пару строк.
Что требуется-то?

_____________
[продано копирайтерам]
Lightt
AllesKlar
Требуется выводить рандомно строку из table1 и больше никогда её не показывать, для определенного пользователя.
Что то вроде такого.
SELECT * FROM `table1` WHERE NOT IN (".$table1_user['ID'].") ORDER BY RAND() LIMIT 1 
AllesKlar
таблица
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
AllesKlar
Спасибо большое! Вроде сработало)
Xpund
Цитата (Lightt @ 21.06.2015 - 11:21)
AllesKlar
и больше никогда её не показывать, для определенного пользователя.
[/sql]

Тут бы ещё одно условие добавить, которое будет отвечать за то, показывалось уже юзеру сообщение или нет.

_____________
минус, конечно, иногда полезен, но плюс мне нравиться больше :)
Женский журнал - Жена сказала раскрутить сайт любой ценой (Sorry)
AllesKlar
Xpund
Оно там уже какбэ интегрировано

_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.