Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wann sollten kommagetrennte Werte in einer DB-Spalte verwendet werden?

Sie kennen die Antwort bereits.

Zunächst einmal funktioniert Ihr PHP-Code nicht einmal annähernd, da er nur funktioniert, wenn Benutzer 2 nur einen einzigen Wert in „LookingFor“ oder „Drogen“ hat. Wenn eine dieser Spalten mehrere durch Kommas getrennte Werte enthält, funktioniert IN nicht, selbst wenn Diese Werte befinden sich in genau derselben Reihenfolge wie die Werte von Benutzer 1. Was erwarten Sie von IN, wenn die rechte Seite hat ein oder mehrere Kommas?

Daher ist es nicht "einfach", in PHP das zu tun, was Sie wollen. Es ist eigentlich ziemlich mühsam und würde bedeuten, die Felder von Benutzer 2 in einzelne Werte aufzuteilen, dynamisches SQL mit vielen ORs zu schreiben, um den Vergleich durchzuführen, und dann eine äußerst ineffiziente Abfrage durchzuführen, um die Ergebnisse zu erhalten.

Außerdem die Tatsache, dass Sie sogar PHP-Code schreiben müssen Die Beantwortung einer so relativ einfachen Frage zum Schnittpunkt zweier Mengen bedeutet, dass Ihr Design stark fehlerhaft ist. Das ist genau die Art von Problem (relationale Algebra), für deren Lösung SQL existiert. Ein korrektes Design ermöglicht es Ihnen, das Problem in der Datenbank zu lösen und implementieren Sie dann einfach eine Präsentationsschicht darüber in PHP oder einer anderen Technologie.

Wenn Sie es richtig machen, wird es Ihnen viel leichter fallen.