WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Вывести 2 столбика по разным значениям WHERE

Прошу помочь с составлением SQL-запроса.

Есть таблица:

Структура:

Основная нужная мне сортировка идет по полю maraphon_member_month (период участия в мероприятии).

SELECT
	orders.date AS order_date,
	users.ID AS user_id_check,
	orders.order_id AS order_id,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'first_name' LIMIT 1) AS first_name,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'last_name' LIMIT 1) AS last_name,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'telephone' LIMIT 1) AS telephone,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'age' LIMIT 1) AS age,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'height' LIMIT 1) AS height,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'weight-at-start' LIMIT 1) AS weight_at_start,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'breastfeed' LIMIT 1) AS breastfeed,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'daily-activity' LIMIT 1) AS daily_activity,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'kcal_with_active' LIMIT 1) AS kcal_with_active,
	orders.kcal_last_month,
	orders.class_last_month,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'wpux_capabilities' LIMIT 1) AS role_color,
	(SELECT meta_value FROM wpux_usermeta WHERE user_id = users.ID AND meta_key = 'workout_class' LIMIT 1) AS workout_class,
	orders.maraphon_member_month,
	orders.director_comment
	FROM wpux_orders orders, wpux_users users
	WHERE orders.paid = '1'
	AND orders.maraphon_member_month = '10.2020'
	AND orders.user_email = users.user_email
	AND orders.maraphon_next_month LIKE '%марафон%'
	ORDER BY last_name

Мне нужно вывести таблицу, где основной массив данных сортируется по условию orders.maraphon_member_month = '10.2020',
а столбцы orders.kcal_last_month и orders.class_last_month "присоединились" к участнику по условию orders.maraphon_member_month = '09.2020'

Другими словами: заказчик хочет в текущем периоде видеть результаты участников в предыдущем периоде.

Пробовал решить через Count - вывел столбики, но получил нули, выводил через вложенный select - тоже получил нули.

0
Rickie
3.5 лет назад
  • 1

    Начни с простого запроса по нужной сортировке, после чего будешь добавлять остальные параметры.

    Упрости выеди требуемый минимум, что бы не было лишних параметров и шума. И уже после пробуй что то добавлять.

    Rickie 3.5 лет назад

    Большое спасибо тебе за ответ. Решил вопрос на stackoverflow за пару часов упростив задачу - это действительно единственный выход.
    Задача:

    Из таблицы результатов взвешивания юношей, мне нужно вывести их результаты за текущий период с появлением нового столбца "Вес в прошлом периоде".

    Ответ:
    select t1.*, t2.weight_now as weight_before from table t1 left join table t2 on (t2.id = t1.id and t2.period = PERIOD - '1month') where t1.period = PERIOD

    Где:

    table t2 - это псевдоним основной таблицы для join'a,
    t2.period = PERIOD - '1month' - это проверка указанной разности в рамках синтаксиса данной СУБД

    anseme 3.5 лет назад

    рад за тебя!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация