Вывод PHP mysql LEFT JOIN

У меня php-скрипт работает поверх apache. Каждый раз, когда пользователь переходит к определенному URL-адресу, он получает csv-файл.

Названия столбцов выбираются так (спасибо Daniel Figueroa 🙂

$csv_output .= "\n"; // get the column name from the first DB (ins.data) mysql_select_db($db, $link) or die("Can not connect to DB1."); $result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE Field NOT IN ('ID','Key','Text')"); $i = 0; if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) { $csv_output .= $row['Field']."; "; $i++; } } // get the column names from the second DB (Cu.data) mysql_select_db($db2, $link) or die("Can not connect to DB2."); $result = mysql_query("SHOW COLUMNS FROM ".$table2." "); ; $i = 0; if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) { $csv_output .= $row['Field']."; "; $i++; } } $csv_output .= "\n"; 

Фактический запрос на PHP-скрипт выглядит следующим образом:

 $values = mysql_query(" SELECT ins.data.`Date`, ins.data.`Number`, ins.data.`Email`, ins.data.`TargetId`, ins.data.`CSW`, ins.data.`TSW`, ins.data.`CType`, Cu.data.`Cus`, Cu.data.`Co`,Cu.data.`Ci`, Cu.data.`SID`, Cu.data.`SType` FROM ins.data LEFT JOIN Cu.data ON (ins.data.TargetId = Cu.data.TargetID) ORDER BY ins.data.ID DESC"); 

Выход «desc»:

 mysql> desc ins.data; +-------------------+------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+------------------+------+-----+---------------------+----------------+ | ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | Date | timestamp | NO | | 0000-00-00 00:00:00 | | | Number | text | NO | | NULL | | | Text | text | NO | | NULL | | | Email | text | NO | | NULL | | | TargetId | varchar(20) | NO | | NULL | | | CSW | text | NO | | NULL | | | TSW | text | NO | | NULL | | | Key | text | NO | | NULL | | | CType | text | NO | | NULL | | +-------------------+------------------+------+-----+---------------------+----------------+ 10 rows in set (0.00 sec) mysql> desc Cu.data; +----------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------+------+-----+---------+-------+ | Title | decimal(15,0) | NO | | NULL | | | Cu | text | NO | | NULL | | | Co | text | NO | | NULL | | | Ci | text | NO | | NULL | | | SID | text | NO | | NULL | | | TargetID | varchar(20) | NO | MUL | NULL | | | SType | text | NO | | NULL | | | empty1 | int(11) | NO | | NULL | | | empty2 | int(11) | NO | | NULL | | | empty3 | int(11) | NO | | NULL | | | empty4 | int(11) | NO | | NULL | | | empty5 | int(11) | NO | | NULL | | | empty6 | int(11) | NO | | NULL | | | empty7 | int(11) | NO | | NULL | | +----------+---------------+------+-----+---------+-------+ 12 rows in set (0.00 sec) 

ОБНОВЛЕНИЕ 3:

Это не более ПРИРОДНЫЙ ЛЕВЫЙ ПРИСОЕДИНЕНИЕ. Заменяется LEFT JOIN.

Добавлены поля empty1-5 в ins.data, чтобы получить данные в csv-файл. Без полей empty1-5 только данные из первого db (ins.data) были в csv.file.

Теперь у меня есть данные обо всех полях, но имена полей (или столбцов на excel) в csv находятся в неправильном порядке, а незапрашиваемые поля (столбцы) видны как Title и empty1-5.

Любые идеи, как это исправить? Другой способ получить имена полей в csv-файл без «SHOW COLUMNS»?

Я мог бы написать «echo» в начале значений csv-file, что я хочу. т.е. «Дата, номер, адрес электронной почты, идентификатор цели, CSW, TSW, CType; Cu; SID; Co; Ci; SType;» но я так новичок с PHP, что я не знаю, как 🙁

Другая проблема заключается в том, что если идентификатор поля является первым столбцом в excel, excel не может обработать его, и он должен быть исключен из вывода SHOW COLUMNS.

UPDATE4: добавлено больше пустых полей в DB2 (Cu.data) и переупорядочено SQL-запрос, теперь все значения видны и находятся в правильном порядке.