MySQL: Alle Werte von 1: m in ein Feld eintragen?

  • Nehmen Sie die folgenden möglichen Modelle an:

    Modell 1:

     TABLE: book
    - book_id
    - name
    
    TABLE: book_author
    - book_author_id
    - book_id
    - author_id
    
    TABLE: author
    - author_id
    - name
     

    (ein Buch kann 0 oder mehr Autoren haben)

    Modell 2:

     TABLE: book
    - book_id
    - name
    
    TABLE: book_eav
    - book_eav_id
    - book_id
    - attribute (e.g. "author")
    - value (e.g. "Tom Clancy")
     

    (ein Buch kann 0 oder mehr Autoren haben + Informationen zu Herausgeber, Seitenanzahl usw.)

    Wie frage ich das so ab, dass ich book.book_id, book.name + ein authors -Feld erhalte, das die 0 oder mehr mit dem Buch verknüpften Werte enthält ?

    Ich versuche, dies zu tun, damit ich die Abfrageergebnisse als Dokumente in einem Lucene-Index verwenden kann.

    22 November 2011
    Bill Karwin
2 answers
  • Schauen Sie sich die GROUP_CONCAT-Funktion an.

    http://dev.mysql.com/doc/refman/5.0/de/group-by-functions.html

    22 November 2011
    Memochipan
  • Lucene unterstützt mehrere Felder mit demselben Namen, was bedeutet, dass Sie tatsächlich mehrere Felder mit dem Namen "Author" in demselben Dokument speichern können.

    Ich schlage vor, dass Sie dies tatsächlich tun tun Sie das und rufen Sie zusätzliche Daten mit einer anderen Anweisung ab, zum Beispiel:

    wird für Bücher ausgewählt. Wählen Sie für book_id und den Autor aus.

    22 November 2011
    jishi