2017-08-03 10 views
0

私は4つのテーブルを維持します。MysqlデータをExcelにエクスポートする際に、2つのテーブルを結合/結合する方法は?

表1(表名:製品) - > pro_id、pro_model、価格

表2(表名:pro_description) - > ID、pro_id、pro_name、pro_desp

表3(表名: pro_to_category) - > ID、pro_id、

表4(表名CAT_ID:カテゴリ) - > CAT_IDを私は ダウンロードを勝るためにmysqlのデータをエクスポートする際、cat_desp

は、今私は、フィールドをダウンロードしたい、pro_id、 pro_name、pro_desp、price、pro_model 、カテゴリ (注:カテゴリにはcat_despが必要、cat_idは必要ありません) アドバイスありがとうございます。解決するのに役立ちます。 :(

<?php 
/*******EDIT LINES 3-8*******/ 
$DB_Server = "localhost"; //MySQL Server  
$DB_Username = "username"; //MySQL Username  
$DB_Password = "password";    //MySQL Password  
$DB_DBName = "databasename";   //MySQL Database Name 
$DB_TBLName = "tablename"; //MySQL Table Name 
$filename = "excelfilename";   //File Name 
/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/  
//create MySQL connection 
$sql = "Select * from $DB_TBLName"; 
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
//select database 
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
//execute query 
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());  
$file_ending = "xls"; 
//header info for browser 
header("Content-Type: application/xls");  
header("Content-Disposition: attachment; filename=$filename.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
/*******Start of Formatting for Excel*******/ 
//define separator (defines columns in excel & tabs in word) 
$sep = "\t"; //tabbed character 
//start of printing column names as names of MySQL fields 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
echo mysql_field_name($result,$i) . "\t"; 
} 
print("\n");  
//end of printing column names 
//start while loop to get data 
    while($row = mysql_fetch_row($result)) 
    { 
     $schema_insert = ""; 
     for($j=0; $j<mysql_num_fields($result);$j++) 
     { 
      if(!isset($row[$j])) 
       $schema_insert .= "NULL".$sep; 
      elseif ($row[$j] != "") 
       $schema_insert .= "$row[$j]".$sep; 
      else 
       $schema_insert .= "".$sep; 
     } 
     $schema_insert = str_replace($sep."$", "", $schema_insert); 
     $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
     $schema_insert .= "\t"; 
     print(trim($schema_insert)); 
     print "\n"; 
    } 
?> 
+1

これはあなたの問題を解決するものではありませんが、 'mysql_'コンストラクタがありますのでご注意ください[** PHP 5.5の非推奨**] (https://wiki.php.net/rfc/mysql_deprecation)、** PHP 7 **で削除されました(https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7#extmysql)。 [** MySQLi **](http://php.net/manual/en/book.mysqli.php)または[** PDO **](http://php.net/manual/en/book。 pdo.php)、[** prepared statements **](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用して[** SQLインジェクション** ](https://en.w ikeipedia.org/wiki/SQL_injection):) –

答えて

2

これらの線に沿って文字列で検索してください:

SELECT 
    t1.pro_id, 
    t2.pro_name, 
    t2.pro_desp, 
    t1.price, 
    t1.pro_model, 
    t4.cat_desp 
FROM products t1 
INNER JOIN pro_description t2 
    ON t1.pro_id = t2.pro_id 
INNER JOIN pro_to_category t3 
    ON t1.pro_id = t3.pro_id 
INNER JOIN category t4 
    ON t3.cat_id = t4.cat_id 
+0

:)とてもうまく動作しています。申し訳ありませんもう一度疑い。そのテーブル1(製品)では、私はcreate_date(int)を維持しました。 通常、データ型SQLをエクスポートするときに日付形式(intからdate)に変換するには、int(date( 'd-m-Y'、$ str))を に変換する方法をintに使用していますか? – Ived

+0

私はこれについては分かりません。理想的には、MySQLの日付カラムは日付としてエクスポート可能でなければなりません。文字列に強制したい場合は、[DATE_FORMAT](https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format)を使って調べてください。 –

+0

ご協力いただきありがとうございます。私は日付のための解決を得ることを試みる。もし私がo/pを取得すれば、すぐに更新されます。 – Ived

関連する問題