2015-04-09 2 views
0

У меня есть две таблицы с разными полями в этом и имеющие только одно общее поле в качестве первичного ключа/внешнего ключа. Как создать временную таблицу с новыми полями, выбрав некоторые поля из двух существующих таблиц? И мне нужно вставить значения один раз после создания таблицы temp.Создание новых временных таблиц в mysql из выбора двух таблиц с помощью PHP

Ситуация 1: Мне нужно сделать это, когда мне нужно создать несколько отчетов из двух существующих таблиц за один клик, например создать таблицу, если она уже не существует, вставить в нее значения, привести к результату. должны сделать это все одним кликом.

ситуация 2: У меня есть поле ранга в таблице 2. В соответствии с полем ранга в новой таблице темп могут быть созданы новые поля. Например: если rank> 1 < 100, то поле rank1 должно быть создано в таблице temp. если rank> 101 < 200, то rank2 поле должно быть создано.

Ситуация 3: Если запрос на выборку генерирует количество записей, то я хочу, чтобы вставить, что в одном из самой строки, не делая слишком много строк

Ex:

Если я производить некоторые результаты, следующим образом

Дата Оценка
11-01-2015 11
11-01-2015 120
11-01-2015 210

Мне нужно создать временную таблицу таким образом, чтобы объединить все звания с одним полем даты в ней и с ранга1 = 11, rank2 = 120 и rank3 = 210

Тогда я смогу получить все звания через дату в одном запросе.

+2

Написать запрос, который возвращает данные, что вам нужно. Затем используйте 'CREATE TEMPORARY TABLE tablename AS SELECT ...', где вы поместите этот запрос в конец. – Barmar

+0

, пожалуйста, рассмотрите мою ситуацию 2. и скажите мне, как создать таблицу с ней – Dhana

+0

Вам нужно будет написать динамический SQL для этого. Но почему вы хотите иметь разные имена столбцов в таблице temp, как вы узнаете, какой столбец будет использоваться при его запросе? Вероятно, вы ошибаетесь, если вам нужно это сделать. – Barmar

ответ

1

Ситуация 2:

CREATE TEMPORARY TABLE tablename AS 
SELECT date, 
     MAX(CASE WHEN rank BETWEEN 1 AND 100 THEN rank END) AS rank1, 
     MAX(CASE WHEN rank BETWEEN 101 AND 200 THEN rank END) AS rank2, 
     MAX(CASE WHEN rank BETWEEN 201 AND 300 THEN rank END) AS rank3, 
     MAX(CASE WHEN rank > 300 THEN rank END) AS rank4 
FROM table2 
GROUP BY date 
+0

Можно ли получить сообщение о результатах создания этой таблицы? – Dhana

+0

Я не знаю, что вы имеете в виду. Получите какой результат? – Barmar

+0

выберите таблицу и отобразите – Dhana

Смежные вопросы