Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL - Abfrage über 2 Attribute

Frage Entwicklung Datenbanken

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

10.04.2009, aktualisiert 13:31 Uhr, 6649 Aufrufe, 8 Kommentare

Hallo zusammen,
und seinen wunderschönen Tag zum Arbeiten.

Ich habe eine MySQL-Tabelle die wie folgt aufgebaut ist:
01.
CREATE TABLE IF NOT EXISTS `protection` ( 
02.
  `id` int(11) NOT NULL auto_increment, 
03.
  `tag` varchar(50) NOT NULL, 
04.
  `name` char(50) NOT NULL, 
05.
  `sid` varchar(50) NOT NULL, 
06.
  PRIMARY KEY  (`id`) 
07.
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
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
Mitglied: maretz
10.04.2009 um 17:03 Uhr
Ich habe schon einige Ideen entwickelt - aber um das nicht langweilig werden zu lassen poste ich die mal nicht...

Wie wärs wenn du erstmal deine Überlegungen zeigst - und wir dann gucken ob man da was verbessern könnte?
Bitte warten ..
Mitglied: dog
10.04.2009 um 18:28 Uhr
Naja, da gibt es mehrere Ansätze, abhängig davon wie du den Query erzeugst.

Am leichtesten wäre:

01.
SELECT * FROM protection WHERE tag LIKE 'parameter%'
ist equiv. zu:

01.
SELECT * FROM protection WHERE tag LIKE CONCAT(parameter,'%')
Es geht natürlich auch komplizierter:

01.
SELECT *,SUBSTRING(tag FROM 0 FOR CHAR_LENGTH(parameter)) AS comp WHERE parameter = comp
Grüße

Max
Bitte warten ..
Mitglied: Dani
10.04.2009 um 21:13 Uhr
Hi Max,
die Abfrage 1 passt auf mein Problem nicht. Bie der 2. meldet mir phpMyAdmin die Funktion gibt es nicht und die 3. Abfrage versteh nicht.
Bitte warten ..
Mitglied: Dani
10.04.2009 um 21:20 Uhr
Ich erklär's am Besten noch einmal.

Ich rufe ein SQL-Abfrage auf - diese bekommt 2 Parameter. Der erste Parameter wird mit der Spalte "sid" verglichen und zwar über " WHERE sid='parameter'!. Das ist nicht das Problem...
Nun soll der 2. Parameter mit der Spalte "tag" verglichen werden und zwar sollen nur soviele Zeichen wie der String der in der Spalte "tag" drin steht.

Beispiel:
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.


Grüße,
Dani
Bitte warten ..
Mitglied: dog
10.04.2009 um 23:17 Uhr
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:

01.
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
Bitte warten ..
Mitglied: Dani
11.04.2009 um 01:24 Uhr
Hi Max,
die Abfrage wird aus einen Modul eines Programmes gestartet - welches das ist, tut hier nichts zur Sache. Sprich bei einem bestimmten Event wird diese dann generiert und ausgeführt.

DIe Abfrage bringt folgenden Fehler:
01.
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE tag = comp' at line 1
Grüße,
Dani
Bitte warten ..
Mitglied: dog
11.04.2009 um 01:58 Uhr
OK, Sorry ich hatte vergessen, dass MySQL "temporäre Spalten" nicht in WHERE-Klauseln verwenden kann.
Das sollte aber jetzt funktionieren:

01.
SELECT * FROM protection WHERE tag = SUBSTRING(parameter FROM 1 FOR CHAR_LENGTH(tag));
Grüße

Max
Bitte warten ..
Mitglied: Dani
11.04.2009 um 12:57 Uhr
Hi Max,
ich habe als Parameter "siet_test" hinterlegt. Nun erscheint folgende Meldung:
01.
#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
Schau ich in meiner Struktur nach, sind alle VARCHAR-Felder in latin1. Ich habe jetzt mal alles auf UTF-8 umgestellt und siehe es geht.


Grüße,
Dani
Bitte warten ..
Ähnliche Inhalte
PHP
MYSQL Abfrage von 2 identischen Tabellen
gelöst Frage von datadexxPHP5 Kommentare

Hi an alle MYSQL Profis, ich hätte folgende Frage. Ich habe 2 Tabellen (kstamm, ustamm), diese sind vom Aufbau ...

Datenbanken
MYSQL Abfrage
gelöst Frage von datadexxDatenbanken20 Kommentare

Halo an alle MySQL Spezialisten! Wie kann ich denn am besten folgende Werte abfragen und berechnen? Ausgang für die ...

Batch & Shell
AD-Abfrage Attribute mittels Batch
gelöst Frage von goodbytesBatch & Shell2 Kommentare

Hallo, mittels dsquery.exe kann ich ja Abfragen an das AD senden. Die folgende Abfrage gibt mir die Standorte aller ...

PHP
Suchfeld mit Abfrage auf eine MySQL-Datenbank
gelöst Frage von SaschaRDPHP6 Kommentare

Hallo zusammen, ich steh mal wieder auf dem Schlauch. Bin dabei ein Suchfeld auf die Webseite zu bringen. Jedoch ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 6 StundenBatch & Shell7 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 8 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...