Различные вопросы по PHP и MySQL

102K
.
Enter нажат, к чему теперь рыданья…
ДоХтор, хорошо, когда знаешь, что именно ищешь. Я не мог найти, мне всё какие-то настройки временных зон для скриптов в поиске попадались
Отлично всё работает, уже даже в функционал CMS добавил. Теперь из настроек пользователя, в личном профиле, он автоматом будет получать корректную телепрограмму, без танцев с бубном и колдовством над устройствами просмотра.
.
# Sitego (02.10.2017 / 20:51)
ДоХтор, хорошо, когда знаешь, что именно ищешь.
Ооо дааа, гг ... Мне по работе недавно пришлось править js-код, и вроде бы всё логично в коде, но пару часов поисков по гуглу ничем мне так и не помогли. Пока Макс (Симба) не написал мне пример, дальше я не мог идти, гг... Так что ты верно заметил - надо знать, что гуглить.
.
Есть 1 таблица `users` и 4 таблицы `tab1`, `tab2`, `tab3`, `tab4`
В каждой из таблиц хранятся записи, которые добавляют какие-то пользователи (`time_add` - время добавления, `user_add` - ID юзера, который добавил запись)
Нужно получить список ID юзеров, которые создавали записи хотя бы в одной из таблиц в определённый промежуток времени от $time_start до $time_end
.
Hey guys! Finally I'm gonna change status!?
Hat-Trik, Первое что на ум пришло
select user_add from tab1 where time_add BETWEEN $time_start and $time_end
union all /* без ALL выведет только уники */
select user_add from tab2 where time_add BETWEEN $time_start and $time_end
.
Hat-Trik, не уверен, что отработает, проверить не на чём:
$query = "
    SELECT `user_add` 
    FROM `users`, `tab1`, `tab2`, `tab3`, `tab4` 
    WHERE `time_add` >= $time_start AND `time_add` <= $time_end
";
.
kantry
Hey guys! Finally I'm gonna change status!?
Добавлено: 14.10.2017 / 17:15
ДоХтор, А `users` то на кой здесь нужен?
П.С. `time_add` >= $time_start AND `time_add` <= $time_end - выше в примере правильнее))

Добавлено: 14.10.2017 / 17:24
П.П.С. И с таким запросом вылезет что то типа column 'user_add' in field list is ambiguous
.
ДоХтор
# kantry (14.10.2017 / 17:24)
ДоХтор, А `users` то на кой здесь нужен?
Ну так из поста следует: Есть 1 таблица `users` и 4 таблицы `tab1`, `tab2`, `tab3`, `tab4`

П.П.С. И с таким запросом вылезет что то типа column 'user_add' in field list is ambiguous

Тогда, вероятно, надо явно задать названия таблиц, из которых надо выбирать поля. Как-то так (теоретически)
$query = "
    SELECT 
        `users`.`user_add`, 
        `tab1`.`user_add`, 
        `tab2`.`user_add`, 
        `tab3`.`user_add`, 
        `tab4`.`user_add`
    FROM `users`, `tab1`, `tab2`, `tab3`, `tab4` 
    WHERE `time_add` >= $time_start AND `time_add` <= $time_end
";
UPD: Убрал лишнюю запятую из запроса.
.
Hey guys! Finally I'm gonna change status!?
# ДоХтор (14.10.2017 / 17:41)
Ну так из поста следует: Есть 1 таблица `users` и 4 таблицы `tab1`, `tab2`, `tab3`, `tab4`
Мало ли что он там написал Нужен то ай-ди писателей, а какой может быть ай-ди если его нет в users?
.
kantry
Hey guys! Finally I'm gonna change status!?
ДоХтор, Пост изменил когда я уже отвалил)) Ты чего такой невнимательный то? WHERE `time_add` при объединении таблиц с одинаковыми колонками, надо альясы использовать, иначе ошибка вылезет - неоднозначные колонки!
Твой запрос(реконструкция):-D
SELECT `id` FROM `users` WHERE id IN(
        select user_add from `tab1` WHERE time_add BETWEEN $time_start AND $time_end)
OR id IN(
        select user_add from `tab2` WHERE time_add BETWEEN $time_start AND $time_end)
.
Добавлено: 15.10.2017 / 11:39
Вот по типу последнего варианта у меня самого получился после нескольких попыток

Добавлено: 18.10.2017 / 23:56
У нас есть `table` и записи в ней, где в поле `type` указывается, либо 1, либо 0.
Как в одном запросе сосчитать количество записей с type 0, кол-во записей с type 1 и из одного вычесть второе?
Всего: 7969