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

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

10.04.2009, aktualisiert 13:31 Uhr, 6666 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
PHP MySQL Abfrage aus Datenbank
Frage von Lost144PHP12 Kommentare

Hallo, Ich habe in einer Datenbank daten über VM's stehen. Angaben wie hostname,adresse, serverat usw. Wie kann ich in ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs9 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Debian
Wie finde ich den betroffenen user
Frage von ProtectedDebian8 Kommentare

Hallo, Wie kann ich den User finden der dies verursacht hat? Betriebsystem ist Debian 7 your Server/Customer with the ...

Voice over IP
Vodafone IP Anlagenanschluss - TK-Anlage einrichten
Frage von BytedreherVoice over IP8 Kommentare

Moin Zusammen, wir hatten gestern bei uns die Umstellung auf den neuen IP Anschluss bei Vodafone. Vodafone IP Anlagenanschluss ...