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
und seinen wunderschönen Tag zum Arbeiten.
Ich habe eine MySQL-Tabelle die wie folgt aufgebaut ist:
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113658
Url: https://administrator.de/forum/mysql-abfrage-ueber-2-attribute-113658.html
Ausgedruckt am: 11.04.2025 um 14:04 Uhr
8 Kommentare
Neuester Kommentar
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.
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