Создайте временную таблицу MySQL и выберите ее в Stack Overflow

Мне нужен совет с кодом PHP / MySQL, который я пишу. Что мне нужно сделать, это создать временную таблицу и затем выбрать из нее. Проблема в том, что временная таблица сохраняется только в течение запроса, который ее создал, поэтому второй запрос в PHP пуст.

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

Приведенные ниже запросы работают в phpMyAdmin, если они выполняются один за другим.

Запрос к временной таблице:

$sql_temp_table = "CREATE TEMPORARY TABLE IF NOT EXISTS
tbl_temp (id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) AS
(SELECT
SUM(number_active_ads) as active_ads,
MONTH(create_date) as month,
YEAR(create_date) as year,
dealer_id as dealer_id
FROM tbl_active_ads
WHERE dealer_id = '".$rs->fields['id']."'
GROUP BY year, month
ORDER BY id)";
$rs_temp_table  =   $db -> Execute($sql_temp_table);

Второй SELECT запрос:

$qry_chk_active_ads = "SELECT
a.*,
t.user_dealer_id,
t.dealer_payment_for_month,
t.dealer_payment_for_year
FROM tbl_temp as a
LEFT OUTER JOIN tbl_transaction as t
ON (a.dealer_id = t.user_dealer_id
AND a.month = t.dealer_payment_for_month
AND a.year = t.dealer_payment_for_year)
ORDER BY id DESC
LIMIT 3";
$rs_chk_active_ads  =   $db -> Execute($qry_chk_active_ads);

ОБНОВИТЬ: Когда я делаю это: var_dump($rs_temp_table); Я получаю следующий вывод из PHP:

object (ADORecordSet_empty) # 6 (6) {[«dataProvider»] => string (5) «empty» [«databaseType»] => bool (false) [«EOF»] => bool (true) [«_numOfRows» ] => int (0) [«fields»] => bool (false) [«connection»] => bool (false)}

Может быть, это объясняет, почему temp_table кажется пустым в PHP?

0

Решение

Почему бы просто не использовать …

SELECT a.*
, t.user_dealer_id
, t.dealer_payment_for_month
, t.dealer_payment_for_year
FROM
( SELECT SUM(number_active_ads) active_ads
, DATE_FORMAT(create_date,'%Y-%m') yearmonth
, dealer_id
FROM tbl_active_ads
WHERE dealer_id = '".$rs->fields['id']."'
GROUP
BY DATE_FORMAT(create_date,'%Y-%m')
) a
LEFT
JOIN tbl_transaction t
ON a.dealer_id = t.user_dealer_id
AND a.yearmonth = MONTH(t.dealer_payment_for_month)
AND a.yearmonth = YEAR(t.dealer_payment_for_year)
ORDER
BY id DESC
LIMIT 3;
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]