2012-02-27 8 views
0

SQLクエリにGroup_Concat関数を組み込む際に問題があります。私はPHPでそれを回避しようとしましたが、代わりにSQLを使用する方が好きです。私のコードは以下の通りです。私はMYSQLの最新バージョンを使用しています。SQLヘルプ〜GROUP_CONCAT

SELECT Main.Title, Main.DatePrint, Main.PerformanceDate, Main.Unsure_Sure, Main.Register, Main.notes, 
VenueKey.Venue,AuthorKey.Author, CompanyKey.Company, PrintKey.Printer, SourceKey.Source 
FROM Main INNER JOIN MainVenue 
    ON Main.MainID = MainVenue.ID_V 
    INNER JOIN VenueKey 
    ON MainVenue.VenueID = VenueKey.ID_V_K 

    INNER JOIN MainAuthor 
    ON Main.MainID = MainAuthor.ID_A 
    INNER JOIN AuthorKey 
    ON MainAuthor.AuthorID = AuthorKey.ID_A_K 

    INNER JOIN MainCompany 
    ON Main.MainID = MainCompany.ID_C 
    INNER JOIN CompanyKey 
    ON MainCompany.CompanyID = CompanyKey.ID_C_K 

    INNER JOIN MainPrinter 
    ON Main.MainID = MainPrinter.ID_P 
    INNER JOIN PrintKey 
    ON MainPrinter.PrinterID = PrintKey.ID_P_K 

    INNER JOIN MainSource 
    ON Main.MainID = MainSource.ID_S 
    INNER JOIN SourceKey 
    ON MainSource.SourceID = SourceKey.ID_S_K 

理想的には私は著者、会場、および会社のGROUP_CONCATを使用したいが、私はそれは代わりにnull値を返すと、それが動作するようになって苦労してきました。私がこれを解決するために何かできるかどうか私に教えてください。

ありがとうございました。

+0

GROUP_BY句を使用していますか? GROUP_CONCATは、何かがグループ化されている場合にのみ動作します。 – lamplightdev

+0

こんにちは、私はGROUP_BYを使用していません。上記のコードにGROUP_CONCATを入れていません。 SELECT文でGROUP_CONCATを使用しようとしていました –

+0

DB結果を実際に 'GROUP'している場合は' GROUP_CONCAT() 'しか使用できません。おそらく 'CONCAT()'関数が必要でしょうか?あなたが実際に達成したいことにかかっています – Thorsten

答えて

1

GROUP_CONCATを使用するには、結果をグループ化する必要があります。

SELECT 
    AuthorKey.Author, 
    GROUP_CONCAT(VenueKey.Venue) AS all_venues, 
    GROUP_CONCAT(CompanyKey.Company) AS all_companies 
... 
GROUP BY AuthorKey.Author 

などの行に沿って試してみてください。例えば、会場と企業のリストがつながっています。

+0

ちょっと、私はこれを実装しようとしましたが、私のクエリはGroup_Concat関数で動作することを拒否しているようです。 Group Byを加えても、それだけでエラーになりました。これが私のクエリ構造内で機能しない理由はありますか? –

+0

GROUP BY句を追加するとエラーが発生する理由がわかりません。エラーは何ですか? – lamplightdev

+0

私はエラーが正確に何か分かっていないと思うが、検索パラメータに従って、そこに結果があることがわかっても、結果のないエラーハンドラが表示される。 –