Antworten auf deine Fragen:
Neues Thema erstellen

Mysql Eine Abfrage über mehrere Zeilen

AxelM

Nicht mehr ganz neu hier

Hallo
ich habe eine Tabelle mit den spalten
id
obj_id
field
fieldvalue

Nun würde ich gerne folgende Abfrage erstellen:
gib mir alle obj_ids für die es folgende einträge gibt:
field = "Zimmer" && fieldvalue = 4
field = "PLZ" && fieldvalue = 66666

ich stehe hier etwas auf dem Schlauch.
 

SELECT `obj_id`
FROM `Deiner_Tabelle`
WHERE
(`field` = 'Zimmer' AND `fieldvalue` = 4) OR
(`field` = 'PLZ' AND `fieldvalue` = 66666)

Hilft's? Oder verstehe ich etwas falsch?
O.
 
SELECT obj_id FROM Tabelle WHERE (field = "PLZ" AND fieldvalue = "66666") OR (field = "Zimmer" AND fieldvalue = "4")

Verstehe den Sinn der Abfrage (bzw. der Tabelle) zwar auch nicht, aber eigentlich dürfte fieldvalue kein numerisches Feld sein - oder wird damit gerechnet? :rolleyes:
 
Zuletzt bearbeitet:
Das hilft leider nicht weiter.
stellt euch vor, in der Datenbank werden daten zu immobilien abgespeichert.
obj_id = 3 => field = Zimmer => Fieldvalue = 3
obj_id = 3 => field = Miete => fieldvalue = 400

was ich hätte jetzt gern die 3, wenn ich sage : gib mir alle obj_ids mit 3 Zimmern und 400€ Miete.
 
was ich hätte jetzt gern die 3, wenn ich sage : gib mir alle obj_ids mit 3 Zimmern und 400€ Miete.
Ja - dann hast du deine Tabelle völlig falsch aufgebaut. Man kann aus zwei Datensätzen keine Relation herstellen. Entweder enthält ein Datensatz die abgefragten Felder oder es muss anhand einer ID eine zweite Tabelle abgefragt werden.
 
Es geht so nicht zu lösen - auch nicht mit PHP!

Beschäftige dich lieber mit den SQL- bzw. Datenbankgrundlagen ... :D
 
Doch mit PHP geht das schon zu lösen ;)

Finde alle ids wo field = Zimmer && fieldvalue = 3
foreach ids as id
prüfe ob es ein Ergebnis gibt für field= miete && fieldvalue = 400 && id = id
....

Aber effizient ist halt anders.
 
Tatsächlich stehe ich jetzt echt auf dem Schlauch...
was habe ich denn deiner Ansicht nach ursprünglich gefragt und was gibt der Programmablauf wieder?
 
Mal unbesehen vom Rest der Datenbank, der vermutlich keine Überführung in eine Normalform (mindestens mal 1., 2. und 3.) widerfahren ist, sollte die Tabelle, die Du uns vorgegeben hast so aufgebaut sein:
obj_id | zimmer | miete
1 | 3 | 400

und damit ist Deine Abfrage lediglich SELECT `obj_id` FROM `Tabelle` WHERE `zimmer`=3 AND `miete`=400

Glaub mir, etwas in PHP zu erledigen, was Dir die (korrekt modellierte) Datenbank im Handumdrehen ausgibt, ist wie im zweiten Gang in den Urlaub zu fahren.

O.
 
SELECT `obj_id` FROM `Tabelle` WHERE `zimmer`=3 AND `miete`=400
Hatte mir auch schon überlegt, dem TE eine korrekte Datenstruktur im Form einer Beispieltabelle an die Hand zu geben ...
Aber wie auch immer: Deine Abfragen mit Feldnamen in Accents „gerahmt” dürften auch wenig success generieren. :D
 
Deine Abfragen mit Feldnamen in Accents „gerahmt” dürften auch wenig success generieren.
Magst Du mich aufklären, wieso dann bei meinen Anwendungsfällen, sowohl in Tools wie phpMyAdmin oder HeidiSQL als auch beim Übergeben der SQL-Statements in einem PHP-Skript, die backticks ja nicht fehlen dürfen?

Gruß in die alte Heimat (SO36)
O.
 
@owieortho
Die Frage bezieht sich eindeutig auf MySQL und dem sind solcherlei „backticks” fremd. Selbst im Zusammenspiel mit PHP nicht gebräuchlich. Ansonsten verlink doch du mal Beispiele ...
 
-> backticks




 
Das hab ich schon verstanden... ;)
Nun ist die Datenbank aber halt nun mal bereits existent und nicht ganz klein.
Und ich hatte die Hoffnung mir den Aufwand sparen zu können, das umzudrehen.
 
Hallo,
ich denke Dir ist schon viel an die Hand gegeben worden, um diese Abfrage zu lösen.
Allerdings habe ich es so verstanden, dass völlig verschiedene Sachen in den Values der Felder stehen.
Vielleicht solltest Du die Datenbank erweitern und erst einmal dran arbeiten eine Normalform herzustellen.

Vielleicht solltest Du zu allererst eine Tabelle erstellen, die die verschiedenen Kategorien (Zimmer usw.)
Dann hast Du eine ID für die Kategorisierung, außerdem könnte man auch die anderen Werte in separate Tabellen verteilen, die dann jeweils auf ID´s referenzieren. Das macht das Ganze für die Zukunft einfacher und Du machst einen Schritt das Ganze ein wenig zu entwirren.

Ich habe mir jetzt mal eine Testtabelle geschaffen und denke wenn Du es in Mysql lösen willst, musst Du verschachtelte SQL´s bauen.
Hier sowas zum Beispiel :
Code:
select Kombi.ID, testtabelle.ID , testtabelle.fieldvalue, testtabelle.field from
(SELECT testtabelle.ID, testtabelle.field, testtabelle.fieldvalue
  FROM test.testtabelle testtabelle
WHERE (testtabelle.field = 'Zimmer') AND (testtabelle.fieldvalue = 3)
) Kombi, testtabelle where testtabelle.field = 'Miete' and testtabelle.fieldvalue = 400
 
Ist in diesem Thread keiner mehr aktiv? Oder konnten wir helfen?
Eine Rückmeldung wäre schon sehr nett. Foren sind auch dazu da.
 
Backticks erhöhen die Performance des MySQL Interpreters (schnellere Identifikation, ob es Table-/Spaltennamen sind oder reservierte Wörter bzw. Funktionen, Trigger o. ä.). Wer aus seiner Applikation in puncto Speed wirklich das Letzte rauskitzeln will, kommt daran nicht vorbei.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
119.005
Beiträge
1.540.342
Mitglieder
23.167
Neuestes Mitglied
N0trox
Oben