Я пытаюсь сгенерировать общий запрос из таблицы RunFieldName, но у меня возникает проблема, когда я пытаюсь сгенерировать общий запрос в моем цикле foreach. это занимает только мое последнее значение.
Вот моя структура таблицы RunFiledName:
+-----------------------+---------------+---------------+
| FieldName | ShortNameEcht | duplicate |
+-----------------------+---------------+---------------+
| 3SA46FEDa combined % | 3SA46FED | a combined % |
| 3SA46FEDa combined of | 3SA46FED | a combined of |
| 3SA46FEDa forward % | 3SA46FED | a forward % |
| 3SA46FEDa forward of | 3SA46FED | a forward of |
| 3SA46FEDa reverse % | 3SA46FED | a reverse % |
| 3SA46FEDa reverse of | 3SA46FED | a reverse of |
| 3SA46FEDb combined % | 3SA46FED | b combined % |
| 3SA46FEDb combined of | 3SA46FED | b combined of |
| 3SA46FEDb forward % | 3SA46FED | b forward % |
| 3SA46FEDb forward of | 3SA46FED | b forward of |
| 3SA46FEDb reverse % | 3SA46FED | b reverse % |
| 3SA46FEDb reverse of | 3SA46FED | b reverse of |
+-----------------------+---------------+---------------+
Мой желаемый результат должен выглядеть следующим образом:
INSERT INTO GenericTable SELECT '3SA46FED',`Reference`, `3SA46FEDa combined %`, `3SA46FEDa combined of`, `3SA46FEDa forward %`,`3SA46FEDa forward of`, `3SA46FEDa reverse %`, `3SA46FEDa reverse of`;
Вот что я пытался сделать с моим PHP-скриптом:
<?php
$SqlRun = 'Select distinct ShortNameEcht, FieldName from RunFieldName';
$SqlEcht = 'Select distinct FieldName from RunFieldName';
$resultSQLRUN=mysqli_query($conn, $SqlRun);
$resultSQLEcht=mysqli_query($conn,$SqlEcht) or die(mysqli_error($conn));
while($rowEcht = mysqli_fetch_array($resultSQLRUN))
{
$columnsEcht[]=$rowEcht['ShortNameEcht'];
$columnsDup[]=$rowEcht['FieldName'];
}
foreach (array_combine($columnsEcht,$columnsDup ) as $val=>$val2){
$sql='insert into PIVOTtestGeneric SELECT "'.$val.'",`Reference`,
`'.$val.''.$val2.'`,`'.$val.''.$val2.'`
,`'.$val.''.$val2.'`, `'.$val.''.$val2.'`, `'.$val.''.$val2.'`, `'.$val.''.$val2.'`,
`'.$val.''.$val2.'`,`'.$val.''.$val2.'`
,`'.$val.''.$val2.'`, `'.$val.''.$val2.'`, `'.$val.''.$val2.'`, `'.$val.''.$val2.'`
FROM runtable;';
echo $sql.'<br/>';
}
?>
Я также попытался изменить свой цикл в оператор foreach, выполнив:
while($rowEchtDup = mysqli_fetch_array($resultSQLEcht))
{
$columnsDup[]=$rowEchtDup['FieldName'];
}
foreach($columnsEcht as $ind=>$val){
foreach($columnsDup as $indd=>val2){
$sql='insert into PIVOTtestGeneric SELECT "'.$val.'",`Reference`,
'.$val2.' from runtable;';
echo $sql;
}}
Но это не выводит то, что я хочу.
Задача ещё не решена.
Других решений пока нет …