У меня 2 таблицы, которые имеют следующую структуру:Проблемы со сложным MySQL запросом
Таблица 1: ap_form_payments
CREATE TABLE IF NOT EXISTS ap_form_payments (
afp_id int(11) unsigned NOT NULL AUTO_INCREMENT,
form_id int(11) unsigned NOT NULL,
record_id int(11) unsigned NOT NULL,
payment_id varchar(255) DEFAULT NULL,
date_created datetime DEFAULT NULL,
payment_date datetime DEFAULT NULL,
payment_status varchar(255) DEFAULT NULL,
payment_fullname varchar(255) DEFAULT NULL,
payment_amount decimal(62 , 2) NOT NULL DEFAULT '0.00',
payment_currency varchar(3) NOT NULL DEFAULT 'usd',
payment_test_mode int(1) NOT NULL DEFAULT '0',
payment_merchant_type varchar(25) DEFAULT NULL,
status int(1) NOT NULL DEFAULT '1',
billing_street varchar(255) DEFAULT NULL,
billing_city varchar(255) DEFAULT NULL,
billing_state varchar(255) DEFAULT NULL,
billing_zipcode varchar(255) DEFAULT NULL,
billing_country varchar(255) DEFAULT NULL,
same_shipping_address int(1) NOT NULL DEFAULT '1',
shipping_street varchar(255) DEFAULT NULL,
shipping_city varchar(255) DEFAULT NULL,
shipping_state varchar(255) DEFAULT NULL,
shipping_zipcode varchar(255) DEFAULT NULL,
shipping_country varchar(255) DEFAULT NULL,
payment_fee decimal(62 , 2) NOT NULL DEFAULT '0.00',
payment_method varchar(255) DEFAULT NULL,
PRIMARY KEY (afp_id),
KEY form_id (form_id , record_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Таблица 2: ap_form_10242
CREATE TABLE IF NOT EXISTS ap_form_10242 (
id int(11) NOT NULL AUTO_INCREMENT,
date_created datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
date_updated datetime DEFAULT NULL,
ip_address varchar(15) DEFAULT NULL,
status int(4) unsigned NOT NULL DEFAULT '1',
resume_key varchar(10) DEFAULT NULL,
element_1 text COMMENT 'Single Line Text',
element_2 decimal(62 , 2) DEFAULT NULL COMMENT 'Price',
element_3 varchar(11) NOT NULL DEFAULT '0' COMMENT 'Drop Down',
PRIMARY KEY (id),
KEY ip_address (ip_address),
KEY date_created (date_created)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Обе таблицы имеют следующие данные:
Данные для таблицы ap_form_payments
INSERT INTO `ap_form_payments` (`afp_id`, `form_id`, `record_id`, `payment_id`, `date_created`, `payment_date`, `payment_status`, `payment_fullname`, `payment_amount`, `payment_currency`, `payment_test_mode`, `payment_merchant_type`, `status`, `billing_street`, `billing_city`, `billing_state`, `billing_zipcode`, `billing_country`, `same_shipping_address`, `shipping_street`, `shipping_city`, `shipping_state`, `shipping_zipcode`, `shipping_country`, `payment_fee`, `payment_method`) VALUES
(1, 10242, 1, '787878', '2016-03-03 00:00:00', '2016-03-23 00:00:00', 'paid', 'SSSS', '14.00', 'usd', 0, NULL, 1, 'OOO', 'OOO', 'OOO', '1212', 'USA', 1, NULL, NULL, NULL, NULL, NULL, '0.00', 'Credit Card'),
(2, 10242, 1, '787878', '2016-03-03 00:00:00', '2016-03-23 00:00:00', 'paid', 'SSSS', '14.00', 'usd', 0, NULL, 1, 'OOO', 'OOO', 'OOO', '1212', 'USA', 1, NULL, NULL, NULL, NULL, NULL, '0.00', 'Credit Card'),
(3, 10242, 1, '787878', '2016-03-03 00:00:00', '2016-03-23 00:00:00', 'paid', 'SSSS', '14.00', 'usd', 0, NULL, 1, 'OOO', 'OOO', 'OOO', '1212', 'USA', 1, NULL, NULL, NULL, NULL, NULL, '0.00', 'Credit Card');
данных для таблицы ap_form_10242
INSERT INTO `ap_form_10242` (`id`, `date_created`, `date_updated`, `ip_address`, `status`, `resume_key`, `element_1`, `element_2`, `element_3`) VALUES
(1, '2016-03-11 11:23:42', NULL, '127.0.0.1', 1, NULL, 'oo', '12.00', '1'),
(2, '2016-03-11 11:23:42', NULL, '127.0.0.1', 1, NULL, 'oo', '12.00', '1'),
(3, '2016-03-11 11:23:42', NULL, '127.0.0.1', 1, NULL, 'oo', '12.00', '1');
Когда я запускаю следующий запрос ниже со следующими именами столбцов ('PAYMENT_AMOUNT', 'payment_status', 'payment_id') все работаю нормально, но если я использую эти имена двух столбцов ('payment_fee', 'payment_method'), я получаю сообщение об ошибке
Неверный запрос:
select
id,
id as row_num,
date_created,
(select
payment_amount
from
ap_form_payments
where
form_id = '10242' and record_id = A.id
order by afp_id desc
limit 1) payment_amount,
ifnull((select
payment_status
from
ap_form_payments
where
form_id = '10242' and record_id = A.id
order by afp_id desc
limit 1),
'unpaid') payment_status,
(select
payment_id
from
ap_form_payments
where
form_id = '10242' and record_id = A.id
order by afp_id desc
limit 1) payment_id
from
ap_form_10242 A
WHERE
status = 1
order by payment_fee asc
LIMIT 0 , 15
Ошибка я получаю: Query Failed: SQLSTATE[42S22]: Column not found: 1054 column 'payment_method' unknown in order clause
запрос, который проходит:
select
id,
id as row_num,
date_created,
(select
payment_amount
from
ap_form_payments
where
form_id = '10242' and record_id = A.id
order by afp_id desc
limit 1) payment_amount,
ifnull((select
payment_status
from
ap_form_payments
where
form_id = '10242' and record_id = A.id
order by afp_id desc
limit 1),
'unpaid') payment_status,
(select
payment_id
from
ap_form_payments
where
form_id = '10242' and record_id = A.id
order by afp_id desc
limit 1) payment_id
from
ap_form_10242 A
WHERE
status = 1
order by payment_id asc
LIMIT 0 , 15
Может кто-нибудь мне помочь устранить эту проблему, пожалуйста?
Спасибо.
** payment_id ** Для этого я просто пытался сделать его жирным шрифтом, чтобы увидеть, что здесь, где я заменить имя колонные –
Исправьте форматирование, чтобы ваш вопрос читается. –
Я сделал редактирование спасибо –