2017-03-15 10 views
0

こんにちは、CSVエクスポート:複数のデータベース行の単一の行に

問題:私は、データベースからエクスポートを持っているが、しかしそれは二つのテーブルからデータを抽出する必要があります。私は内部結合でこれを達成する。

artikelは基本情報の表です。 ID、記事番号、名前、タイプ、およびパッケージフォームが含まれています。

article_contentは、記事の一部であるテキストを含む表ですが、複数の言語があります。すべての記事には各言語の行があります。

エクスポートコード

header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename=artikeldatenbank-' . date("dmyhi") . '.csv'); 

$output = fopen('php://output', 'w'); 

$stmt = $db->prepare('SELECT artikel.id, artikel.artikel_nummer, artikel.artikel_name, artikel.artikel_packung, artikel.artikel_cat, article_content.article_text, article_content.article_recuse, article_content.article_spec FROM artikel INNER JOIN article_content ON article_content.article_id = artikel.artikel_nummer'); 
$stmt->execute(); 

$result = $stmt->get_result(); 

while ($row = $result->fetch_assoc()) 
fputcsv($output, $row); 

私は

を達成したい私は、代わりに複数行の一行で、それの記事でarticle_contentテーブルからすべての行を必要としています。リンクを申し訳ありませんが、imgurは私にこれらをアップロードさせません。 http://prntscr.com/ek86bn

私が欲しいもの(編集した画像):今(画像を)何が起こる

(なぜ分からないのです)http://prntscr.com/ek87ct

これを達成するための最良の方法は何ですか?これは今のやり方で可能ですか?

答えて

1

は私の提案は、これは、部分的なソリューションです@Ahmed

$result = $stmt->get_result(); 

$artikeID = ''; 
$newRow = []; 
while ($row = $result->fetch_assoc()) 
{ 
    if($artikeID != $row['id']) 
    { 
     if(!empty($newRow)) 
     { 
      fputcsv($output, $newRow); 
      $newRow = []; 
     } 
     $artikeID = $row['id']; 
     $newRow = $row; 
    } 
    else 
    { 
     $newRow['title-'.$row['id']] = $row['artikel_name']; 
     $newRow['content-'.$row['id']] = $row['article_text']; 
    } 
} 
+0

で、コードによってそれを解決する、VIEWソリューションをスキップします。これで1行になりますが、prntscr.com/ek8eq5という言語コンテンツがすべて1行だけ入力されます。この場合の英語とフランス語の翻訳はなくなりました。 Additionalyはlanguage_contentもなくなった記事です – Synthiatic

+0

あなたは正しいです、それぞれの言語の内容を含めるためにDBにVIEWを作成しようとしてください [この質問を確認](http://stackoverflow.com/questions/1241178/mysql-rows-to -columns) –

+0

クエリで正しく実装する方法がわかりません。あなたは私に例を書くことができますか? – Synthiatic

関連する問題