MySQL - Abfrage über 2 Attribute
Hallo zusammen,
und seinen wunderschönen Tag zum Arbeiten.
Ich habe eine MySQL-Tabelle die wie folgt aufgebaut ist:
Nun habe ich ein Plugin von einer Software, die ein SQL-Statement absetzt und 2 Parameter mit auf den Weg gibt.
1. Parameter wird mit "WHERE sid=" abgefragt
2. Parameter soll mit dem Inhalt der Spalte "tag" verglichen werden. Und zwar dahingehend, dass überprüft werden soll ob das Wort in der Zelle am Anfang des Parameters auftaucht. Beispiel:
Zelle: test
Parameter: test_lauf
Ergebnis: Treffer, Rückgabe von "name".
Ich habe schon einige Abfragen erstellt, aber um frischen Wind reinzubringen poste ich diese mal nicht!
Habt ihr ne Idee?
Grüße,
Dani
CREATE TABLE IF NOT EXISTS `protection` (
`id` int(11) NOT NULL auto_increment,
`tag` varchar(50) NOT NULL,
`name` char(50) NOT NULL,
`sid` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
1. Parameter wird mit "WHERE sid=" abgefragt
2. Parameter soll mit dem Inhalt der Spalte "tag" verglichen werden. Und zwar dahingehend, dass überprüft werden soll ob das Wort in der Zelle am Anfang des Parameters auftaucht. Beispiel:
Zelle: test
Parameter: test_lauf
Ergebnis: Treffer, Rückgabe von "name".
Ich habe schon einige Abfragen erstellt, aber um frischen Wind reinzubringen poste ich diese mal nicht!
Habt ihr ne Idee?
Grüße,
Dani
Please also mark the comments that contributed to the solution of the article
Content-Key: 113658
Url: https://administrator.de/contentid/113658
Printed on: April 19, 2024 at 09:04 o'clock
8 Comments
Latest comment
Naja, da gibt es mehrere Ansätze, abhängig davon wie du den Query erzeugst.
Am leichtesten wäre:
ist equiv. zu:
Es geht natürlich auch komplizierter:
Grüße
Max
Am leichtesten wäre:
SELECT * FROM protection WHERE tag LIKE 'parameter%'
ist equiv. zu:
SELECT * FROM protection WHERE tag LIKE CONCAT(parameter,'%')
Es geht natürlich auch komplizierter:
SELECT *,SUBSTRING(tag FROM 0 FOR CHAR_LENGTH(parameter)) AS comp WHERE parameter = comp
Grüße
Max
Ich rufe ein SQL-Abfrage auf - diese bekommt 2 Parameter
Das ist mir nicht präzise genug. Wo hast du die Abfrage erstellt, wo rufst du sie auf?
Bie der 2. meldet mir phpMyAdmin die Funktion gibt es nicht
Das kann eigentlich nicht sein. CONCAT gibt es schon ab MySQL 3.23
In der Spalte "tag" steht "iwus". Der 2. Parameter hat im Moment "iwus|gehas". Da "iwus" eine Länge von 4 hat, nur die ersten 4 Zeichen "iwus|gehas" angeschaut werden.
Ok, da hab ich dich andersrum verstanden (Nämlich dass die Zelle länger ist als der Parameter). Dann muss die Abfrage natürlich lauten:
SELECT *,SUBSTRING(parameter FROM 0 FOR CHAR_LENGTH(tag)) AS comp WHERE tag = comp
Die anderen beiden kannst du vergessen, die passen nicht
Grüße
Max