Столкнулся со следующей задачей, пишу код который создает программно таблицы на php.
Что есть:
1)создаются таблицы tbcheck_1,tbcheck_2,...
2) к колонкам пишутся комментарии - типа названия колонки col0(ФИО),col1(дата),col2(масса) и тому подобное
Запросом выводится следущее
SELECT COLUMN_NAME, COLUMN_COMMENT, DATA_TYPE
FROM information_schema.`COLUMNS`
WHERE TABLE_NAME = 'tbcheck_1' AND COLUMN_COMMENT <> ''
Результат:
COLUMN_NAME | COLUMN_COMMENT | DATA_TYPE
col0 | целое | int
col1 | дробное | double
col2 | строка | varchar
А теперь можно ли построить запрос такого типа:
SELECT COLUMN_NAME, COLUMN_COMMENT, DATA_TYPE -- что-то волшебное здесь а может и не здесь--
FROM information_schema.`COLUMNS`
--left join db_test.tbcheck_1 on idtbcheck=3 // вывести значения колонки 3-его id--
WHERE TABLE_NAME = 'tbcheck_1' AND COLUMN_COMMENT <> ''
COLUMN_NAME | COLUMN_COMMENT | DATA_TYPE | val
col0 | целое | int | 1 (значение col0 третьего ID в из таблицы tbcheck_1)
col1 | дробное | double | 1.0 (значение col1 третьего ID в из таблицы tbcheck_1)
col2 | строка | varchar | abc (значение col2 третьего ID в из таблицы tbcheck_1)
Такое вообще возможно запросом состряпать? или только два запроса два массива и по ключам выводить, чтобы получить массив(dan_col):
$sql_select="SELECT COLUMN_NAME,COLUMN_COMMENT,DATA_TYPE FROM information_schema.`COLUMNS` WHERE TABLE_NAME = '".$namtb."' AND COLUMN_COMMENT<>''";
$result= $connect->query($sql_select);
while ($row = $result->fetch_object())
{
$this->information_schema[]=array('COLUMN_NAME'=>$row->COLUMN_NAME,'COLUMN_COMMENT'=>$row->COLUMN_COMMENT,'DATA_TYPE'=>$row->DATA_TYPE);
}
$col="";
foreach ($this->information_schema as $value) {
$col.=$value['COLUMN_NAME'].",";
}
$col=substr($col, 0, -1);
$sql_select="SELECT $col FROM `tbcheck_1` WHERE idtbcheck= '".$id_otchet."'";
$result= $connect->query($sql_select);
while ($row = $result->fetch_assoc())
{
foreach ($this->information_schema as $value) {
$this->dan_col[]=array('val_name_col'=>$row[$value['COLUMN_NAME']],'coment_col'=>$value['COLUMN_COMMENT'],'date_type_col'=>$value['DATA_TYPE'],'column_name_col'=>$value['COLUMN_NAME']);
}
}
Отредактированно Osi322 (06.07.2016 15:26:31)