über mehrere Spalten existieren kann ich zur Zeit eine Tabelle hat, die Rangliste der Musikverkäufe in einem Geschäft speichert:MySQL: Wie man einen Wert finden, die
|-date-------|-rank_1---|-rank_2---|-...
| 2015-06-30 | 112 | 145 | ...
| 2015-07-31 | 145 | 147 | ...
| ...
| ...
Jede Zahl in der rank_ # Spalte ist ein Fremd Schlüssel, der ein Album in einer separaten Tabelle verweist:
|-album_id---|-album_name----|-...
| 112 | An Album | ...
| 145 | Another Album | ...
| ...
ich eine Funktion implementieren will, wo ich für ein Album suchen und ihre Platzierung über die Termine sehen. Allerdings album_id die kann in einem der rank_ # Spalten zeigen, und ich würde gerne wissen, ob es eine Möglichkeit war, dass ich „invertieren“ könnte die Tabellen so dass ich ein Ergebnis wie erhalten:
SELECT * FROM table WHERE ....
=> |-date-------|-column-----|
| 2015-06-30 | rank_2 |
| 2015-07-31 | rank_1 |
| ...
Nun, die Brute-Force-Methode, die ich mir vorstellen kann, ist nur durch die Tabelle zu durchlaufen und auf jede Zelle in der Tabelle zu sehen, aber da die Tabelle ziemlich groß ist, fragte ich mich, ob es eine effizientere Methode von Dies tun.
kann helfen, sollte ich hinzufügen, dass die gleiche * album_id * zeigt nicht zweimal nach oben in einer Reihe (für ein bestimmtes Datum) seit einem einzigen Album nicht kann besetzen mehr als eine Verkaufsrangliste. – W74
Korrigieren Sie Ihre Datenstruktur, um eine Zeile pro Datum und pro Album mit ihrer Rangfolge zu erhalten. Machen Sie die Datenstruktur SQLish und die Abfrage wird viel einfacher. –
Sind Sie auf SQLite oder MySQL? Sie haben beide markiert? – trincot