| | | | |
| | |
| Erfahrener Benutzer | Hallo! Bin gerade dabei einige MySQL-Anfragen zu überarbeiten (habe da etwas schlampig gearbeitet). Habe das zur Zeit so: Code: SELECT `name` FROM `schiffe` WHERE `typ`=1 AND `klasse`=(SELECT `typ1` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=2 AND `klasse`=(SELECT `typ2` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=3 AND `klasse`=(SELECT `typ3` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=4 AND `klasse`=(SELECT `typ4` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=5 AND `klasse`=(SELECT `typ5` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=6 AND `klasse`=(SELECT `typ6` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=7 AND `klasse`=(SELECT `typ7` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=8 AND `klasse`=(SELECT `typ8` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; SELECT `name` FROM `schiffe` WHERE `typ`=9 AND `klasse`=(SELECT `typ9` FROM `users` WHERE `id`=1 LIMIT 1) LIMIT 1; Das ist nicht optimal, weil es gilt ja so wenige Abfragen wie möglich. Wie bringe ich das also in eine Abfrage? EDIT: Hab mir gerade gedacht, dass ich die Datenbank umdesignen sollte...
__________________ Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß. www.e-faux.com |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Antwort, nein so gehts leider nicht. Ich versuche jetzt seit einer Stunde herauszufinden, was JOIN macht, aber im Handbuch ist das etwas kompliziert... Bei dem Code listet er nach der Reihe alle Schiffe mit dem Typ 1 bis 9 auf. Code: mysql> SELECT
-> s.name, s.typ, s.klasse,
-> u.id
-> FROM
-> schiffe AS s
-> LEFT JOIN users AS u
-> ON (s.klasse IN (u.typ1, u.typ2, u.typ3, u.typ4, u.typ5, u.typ6, u.typ7, u.typ8, u.typ9))
-> AND (u.id = 1)
-> WHERE
-> u.id IS NOT NULL
-> AND s.typ BETWEEN 1 AND 9
-> ORDER BY
-> s.typ, s.klasse;
+------------+-----+--------+------+
| name | typ | klasse | id |
+------------+-----+--------+------+
| Cope | 1 | 1 | 1 |
| Zero | 1 | 2 | 1 |
| Jing | 1 | 3 | 1 |
| Staff | 1 | 4 | 1 |
| Sugger | 1 | 5 | 1 |
| Lilo | 1 | 6 | 1 |
| Rezzer | 1 | 7 | 1 |
| Bitter | 1 | 8 | 1 |
| Hamma | 1 | 9 | 1 |
| Flam | 2 | 1 | 1 |
| Quiti | 2 | 2 | 1 |
| Desperado | 2 | 3 | 1 |
| Nimmerus | 2 | 4 | 1 |
| Dabius | 2 | 5 | 1 |
| Inkolupus | 2 | 6 | 1 |
| Sisler | 2 | 7 | 1 |
| Kanin | 2 | 8 | 1 |
| Risi | 2 | 9 | 1 |
| Assus | 3 | 1 | 1 |
| Fell | 3 | 2 | 1 |
| Remus | 3 | 3 | 1 |
| Pastol | 3 | 4 | 1 |
| Hust | 3 | 5 | 1 |
| Hera | 3 | 6 | 1 |
| Christo | 3 | 7 | 1 |
| Valt | 3 | 8 | 1 |
| Kamal | 3 | 9 | 1 |
| Janna | 4 | 1 | 1 |
| Selenzium | 4 | 2 | 1 |
| Bananer | 4 | 3 | 1 |
| Kisch | 4 | 4 | 1 |
| Sumatra | 4 | 5 | 1 |
| Wopper | 4 | 6 | 1 |
| Gelere | 4 | 7 | 1 |
| Wummer | 4 | 8 | 1 |
| Aira | 4 | 9 | 1 |
| Pflontsch | 5 | 1 | 1 |
| Dempris | 5 | 2 | 1 |
| Peklon | 5 | 3 | 1 |
| Lemoto | 5 | 4 | 1 |
| Quili | 5 | 5 | 1 |
| Elek | 5 | 6 | 1 |
| Sytex | 5 | 7 | 1 |
| Systo | 5 | 8 | 1 |
| Darik | 5 | 9 | 1 |
| Ulir | 6 | 1 | 1 |
| Miratus | 6 | 2 | 1 |
| Urel | 6 | 3 | 1 |
| Beturo | 6 | 4 | 1 |
| Rilo | 6 | 5 | 1 |
| Lomo | 6 | 6 | 1 |
| Dementor | 6 | 7 | 1 |
| Ílsa | 6 | 8 | 1 |
| Petro | 6 | 9 | 1 |
| Telor | 7 | 1 | 1 |
| Usus | 7 | 2 | 1 |
| Yuil | 7 | 3 | 1 |
| Pfers | 7 | 4 | 1 |
| Schiederus | 7 | 5 | 1 |
| Star | 7 | 6 | 1 |
| Festor | 7 | 7 | 1 |
| Desop | 7 | 8 | 1 |
| P³tos | 7 | 9 | 1 |
| Solper | 8 | 1 | 1 |
| Tonardo | 8 | 2 | 1 |
| Half | 8 | 3 | 1 |
| Perantur | 8 | 4 | 1 |
| Gurk | 8 | 5 | 1 |
| Amada | 8 | 6 | 1 |
| Mersy | 8 | 7 | 1 |
| Wondra | 8 | 8 | 1 |
| Multo | 8 | 9 | 1 |
| Telum | 9 | 1 | 1 |
| Olera | 9 | 2 | 1 |
| Argen | 9 | 3 | 1 |
| Umleur | 9 | 4 | 1 |
| Herculem | 9 | 5 | 1 |
| Globl | 9 | 6 | 1 |
| Olav | 9 | 7 | 1 |
| Stor | 9 | 8 | 1 |
| Ultim | 9 | 9 | 1 |
+------------+-----+--------+------+
81 rows in set (0.02 sec)
Code: mysql> SELECT id, typ1, typ2, typ3, typ4, typ5, typ6, typ7, typ8, typ9 FROM users WHERE id=1; +----+------+------+------+------+------+------+------+------+------+ | id | typ1 | typ2 | typ3 | typ4 | typ5 | typ6 | typ7 | typ8 | typ9 | +----+------+------+------+------+------+------+------+------+------+ | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +----+------+------+------+------+------+------+------+------+------+ 1 row in set (0.00 sec) Trotzdem Danke! OT: Der Spruch ist cool... :P
__________________ Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß. www.e-faux.com |
| | |
| | |
| Erfahrener Benutzer | Nya, ich kappier jetzt JOIN so in etwa. Ist eigentlich wie ein WHERE, nur dass es sich immer nur auf eine Spalte bezieht und nicht auf die ganze Abfrage, oder? Ich hab sjetzt so gelöst: Code: SELECT `name` FROM `schiffe` WHERE (`typ`=1 AND `klasse`=(SELECT `typ1` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=2 AND `klasse`=(SELECT `typ2` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=3 AND `klasse`=(SELECT `typ3` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=4 AND `klasse`=(SELECT `typ4` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=5 AND `klasse`=(SELECT `typ5` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=6 AND `klasse`=(SELECT `typ6` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=7 AND `klasse`=(SELECT `typ7` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=8 AND `klasse`=(SELECT `typ8` FROM `users` WHERE `id`=1 LIMIT 1)) OR (`typ`=9 AND `klasse`=(SELECT `typ9` FROM `users` WHERE `id`=1 LIMIT 1)); 1. Weil ich was draus lernen will und 2. Weil das nicht die optimale Lösung ist. Kommt sich ja fast auf das selbe wie die Schleife raus. Danke schon mal.
__________________ Wer weiß dass er nichts weiß, weiß mehr, als der der nicht weiß dass er nichts weiß. www.e-faux.com |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| selenzium, typ neun schiff, was beteutet selenszium |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.