powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / LEFT JOIN без условия ON
12 сообщений из 12, страница 1 из 1
LEFT JOIN без условия ON
    #38876446
furashcka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли возможность склеивать таблицы без услоия ON?

Приведу пример - Есть таблица с именем пользователя и есть таблица со списком бонусов (их более 500) бонусы создают сами пользователи, как выбрать имя пользователя посчитать количество всех бонусов и посчитать бонусы которые принадлежат этому пользователю одним запросом...

Вот какой запрос я составил:

Код: sql
1.
2.
SELECT users.name, COUNT(bonus.id), COUNT(bonus.id_user=1) FROM users
LEFT JOIN bonus ON NULL WHERE users.id_user=1 LIMIT 1



Такой запрос отрабатывает! Но как то он мне не нравится... как можно избавится от этого костылика? "ON NULL"
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876505
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
furashcka,

on 1=1
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876506
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или даже cross join
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876507
furashcka,

то есть, твоему серваку настолько нечего делать, что ты заставляешь его породить декартово произведение таблиц, после чего сгруппировать полученное множество, высчитывая агрегаты только для данных одного заданного пользователя? Верх иррациональности и расточительности.
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876516
furashcka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,
На ошибках учусь))) что посоветует более просветленный? Подскажите как в этой ситуации составить запрос?
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876531
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
furashcka,

странно, а почему бы не связать таблички по полю id_user ... что вам помешало, почему захотелось именно БЕЗ ON?
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876557
furashcka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arhat109, мне нужно посчитать все бонусы, и посчитать все бонусы которые создал пользователь, если привяжу по id_user посчитает только те строки которые соответствуют условию, то есть не узнаю сколько всего бонусов есть...
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876566
furashcka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати знает ли ктото как будет быстрее работать:

a) При создании нового бонуса, приплюсовывать к общему счетчику бонусов +1 в дополнительной таблице (count) и после склеивать таблицы
(Вытаскиваем количество записей из одной дополнительное таблици без использования COUNT() но при каждом создании бонуса обновляем дополнительную таблицу count +1)

b) Считать при каждой выборке COUNT(*)

Пример:
a)
Код: sql
1.
2.
3.
4.
SELECT user.name, count1.allBonus, count2.myBonus FROM user
LEFT JOIN  count1.allBonus ON count1.id=1 //В таблице будет только одна запись
LEFT JOIN  count2.id_user=3
WHERE user.id_user=3



b)
Код: sql
1.
2.
3.
SELECT user.name, B.allBonus, B.myBonus FROM user
JOIN (SELECT COUNT(id) AS allBonus, COUNT(IF(id_user=1,id,NULL)) AS myBonus FROM bonus) AS B
WHERE user.id_user=1
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876595
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получите каждое данное отдельным подзапросом:

Код: sql
1.
2.
3.
4.
5.
6.
SELECT
  (SELECT users.name FROM users WHERE users.id_user=1)
, (SELECT COUNT(bonus.id) FROM bonus)
, (SELECT COUNT(bonus.id) FROM bonus WHERE bonus.id_user=1)
/* FROM dual */ 
;



При наличии соотв. индексов вряд ли можно сделать быстрее...
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876621
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, возможно, в последнем подзапросе разумнее не COUNT(bonus.id), а COUNT(bonus.id_user).
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38876628
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
furashcka,

Это два разных действия. Их можно решить одним запросом, но только через подзапрос, скажем в блоке select. А то что вы делаете - извините, но бред. Об чём вам уже написали.
...
Рейтинг: 0 / 0
LEFT JOIN без условия ON
    #38878618
furashcka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял! Спасибо большое всем!))))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / LEFT JOIN без условия ON
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]