Benutzernamen aus einer durch Kommas getrennten Spalte extrahieren
Stellen Sie sich ein Szenario vor, in dem Sie mehrere Tabellen haben: tblA (Benutzer), tblB (Benutzernamen), und tblC (Nomenklatur mit durch Kommas getrennten Benutzer-IDs). Ziel ist es, bei der Suche nach einem bestimmten Nomenklaturwert alle Benutzernamen abzurufen.
Bestehender Ansatz und Einschränkungen
Die bereitgestellte Abfrage versucht, einen Cross-Join und eine Teilzeichenfolgenfunktion zu verwenden um die erste Benutzer-ID aus dem durch Kommas getrennten Wert zu extrahieren. Dieser Ansatz ist jedoch ineffizient und liefert keine genauen Ergebnisse, wenn der Nomenklatur mehrere Benutzer-IDs zugeordnet sind.
Normalisiertes Schema und verbesserte Abfrage
Es wird empfohlen Normalisieren Sie das Datenbankschema durch die Einführung einer Junction-Tabelle. Die Tabelle tblC_user sollte zwei Spalten enthalten: c_id (referenziert tblC) und userID (referenziert tblB). Dadurch entfällt die Notwendigkeit von durch Kommas getrennten Benutzer-IDs in tblC.
Die folgende Abfrage zeigt, wie Benutzernamen mithilfe des normalisierten Schemas extrahiert werden:
SELECT * FROM tblC c JOIN tblC_user cu ON (c.id = cu.c_id) JOIN tblB b ON (b.userid = cu.userid) WHERE c.nname = "new1";
Diese Abfrage ruft effizient alle zugehörigen Benutzernamen ab mit der Nomenklatur „new1“.
Vorteile von Normalisierung
Die Normalisierung des Datenbankschemas bietet mehrere Vorteile:
Das obige ist der detaillierte Inhalt vonWie kann ich Benutzernamen effizient aus einer durch Kommas getrennten Spalte in einer Datenbank abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!