CONCAT mit GROUP_CONCAT in mysql

So, ich habe überall gesucht für eine Antwort auf diese, aber bisher kein Glück. Jede Hilfe wird sehr geschätzt. Ich bin neu in mysql (übertragen aus einer filemaker pro-hintergrund).

Ich habe eine Datenbank wo ich die Informationen für Interessenten für unser Geschäft. Ich habe eine Frage zum auflisten von Informationen für unsere Nutzer zu finden. Die ANFRAGE Tabelle hält die Informationen für jede Anfrage (also Datum Anfrage kam, status der Anfrage, etc.). Die PROSPEKT Tabelle enthält die Informationen, die auf jeder Interessent (potentieller Kunde) (z.B. Vorname, Nachname, Alter, etc.). Eine Dritte Tabelle, INQUIRYNOTES, halten Sie Informationen über unsere Kontakte mit der Perspektive (d.h. der nächste Kontakt Datum, Notizen, Aktion, etc.). Jeder dieser Tabellen sind im Zusammenhang mit der-Taste inquiryID.

Jeden Tag ein Nutzer kommen zu einem Bildschirm, wo Sie werden präsentiert mit den leads/Anfragen, dass er/Sie follow-up auf, für diesen Tag die Anfragen, die action-Datum kleiner oder gleich heute. Ich möchte die Liste enthält die inquiryID, aufgeführten Namen alle Interessenten mit Bezug zum inquiryID (max 2), und die Aktion Datum.

Hier ist, was ich bisher ausprobiert habe:

SELECT inquiry.inquiryID,
   CASE WHEN prospect.lastName = '' THEN prospect.firstName
   WHEN prospect.firstName = '' THEN prospect.lastName
   ELSE CONCAT(prospect.lastName, ', ',prospect.firstName) END as fullName, inquiryNote.actionDate
FROM inquiry, prospect, inquiryNote
WHERE inquiry.inquiryID = prospect.inquiryID
AND inquiry.inquiryID = inquirynote.inquiryID
AND inquirynote.actionDate != \"0000-00-00\"
AND actionDate <= \"".date("Y-m-d")."\"
GROUP BY inquiryID ORDER BY actionDate";

Dieser liefert die Informationen, die ich suchte, aber es listet nur ein von der Aussicht (auch wenn es 2 für die Untersuchung).

Als Nächstes habe ich versucht, indem Sie die GROUP_CONCAT(Vorname) in dieser und es gab mir eine Liste mit den ersten Namen des Interessenten aufgeführt, die in eine Zeile getrennt durch Kommas (, ich bin immer näher). Dann habe ich versucht, GROUP_CONCAT(name, ', ', Vorname) und dann GROUP_CONCAT(lastname,firstname), aber wieder, es würde nur die Liste einer Aussicht, nicht auf die mehrere Aussichten durch Kommas getrennt.

Möchte ich die variable, die ich mit dem Namen fullName in den obigen code in die GROUP_CONCAT, so dass in den zurückgegebenen Zeilen sehe ich eine Liste aller Aussicht in Bezug auf eine Anfrage gelistet und geteilt durch ein Komma.

Möchte ich die Tabelle in der Webseite, die ich erstellt habe, um diese Spalten:

inquiryID | Perspektiven name(s) (Nachname zuerst) | Nächste Aktion Datum

Wieder so weit, ich kann nur scheinen zu bekommen:

inquiryID | 1 prospect Namen | Nächste Aktion Datum

Die Lösung sein könnte, etwas einfach, aber da ich bin neu in mysql bin ich verloren.

Bitte lassen Sie mich wissen, wenn Sie brauchen mehr Details.


UPDATE MIT LÖSUNG, ABER ÄHNLICHE FRAGE AM ENDE


Das problem war, dass einige der Vorname und Nachname Felder NULL-Werte. Offenbar, GROUP_CONCAT funktioniert jetzt mit null-Werten. Dies ist die Abfrage, dass ich am Ende mit, arbeitete ich einmal losgeworden sind, alle NULL-Werte:

SELECT 
  inquiry.inquiryID, 
  inquiry.initialDate,
  inquiryNote.actionDate,
  GROUP_CONCAT(DISTINCT
    CONCAT(
      CASE WHEN prospect.lastName = '' THEN prospect.firstName
      WHEN prospect.firstName = '' THEN prospect.lastName
       ELSE CONCAT(
        prospect.firstName, ' ',prospect.lastName
      ) END
    ) SEPARATOR ', '
  ) AS prospectList,

GROUP_CONCAT(DISTINCT
    CONCAT(
      CASE WHEN influencer.lastName = '' THEN influencer.firstName
      WHEN influencer.firstName = '' THEN influencer.lastName
      ELSE CONCAT(
        influencer.firstName, ' ',influencer.lastName
      ) END
    ) SEPARATOR ', '
  ) AS influencerList

FROM inquiry, prospect, inquiryNote, influencer WHERE inquiry.inquiryID = prospect.inquiryID
AND inquiry.inquiryID = inquirynote.inquiryID
AND inquiry.inquiryID = influencer.inquiryID
AND inquirynote.actionDate != "0000-00-00" AND actionDate <= "2011-09-22"
GROUP BY inquiryID
ORDER BY actionDate;

So die Letzte Frage ist, kann ich GROUP_CONCAT arbeiten, selbst wenn es auf NULL-Werte?

Wahrscheinlich würden Sie wollen GROUP_CONCAT(CONCAT(lastname, ', ', firstname))

InformationsquelleAutor Jonathan | 2011-09-22

Schreibe einen Kommentar