SQL Problem...

Pitze19888

Cadet 1st Year
Registriert
Okt. 2006
Beiträge
12
Salute liebe Leute ich hätte mal eine Frage... arbeite an einem kleinen Program..welches mit Sql auf eine Datenbank zugreift und mir das Ergebnis in einem Objekt ausgibt...

Problem Abfrage :

in der Datenbank ist folgender Datensatz vorhanden :

Beispiel : "-Platzhalter- geht spatzieren"

ich möchte nun eine Abfrage erstellen welche mir statt dem Platzhalter z.b Hans liefert und Anzeigt...

"Hans geht spatzieren" (er soll sozusagen die Platzhaltervariable nur bei der Abfrage ändern!) und nicht als wert in der Tabelle selbst...


Funktioniert das?... wenn ja wie...

VIELEN DANK

PETER:)
 
Welche Datenbank setzt du ein?

Klingt eher nach einem Designproblem. Der Text "geht spazieren" sollte vielleicht eher über einen Join mit Hans verknüpft werden. Je nach DB kann man auch Textfunktionen benutzen - schön ist das aber nicht und geht am Prinzip einer Datenbank vorbei.
 
SELECT <spaltenname>
FROM <tabelenname>
WHERE <spaltenname> = 'Hans'

du musst halt wissen wie die spalte heist in dem der name steht und wie die tabelle heist in dem die spalte liegt.

wenn du das dann in PHP einbaust oder so danne $satz = $result +"geht spazieren"
 
Ne Access-Datenbank und greife dann mit nem Sql-Query-modul drauf zu ...

im endeffekt...

soll die abfrage den wert in der datenbank nicht ändern! sondern das query soll nur die abfrage mit dem veränderten Platzhalter anzeigen...
 
dann ist es

SELECT <spaltenname> + "geht spazieren" oder SELECT ""+ <spaltenname> + "geht spazieren"
FROM <tabelenname>
WHERE <spaltenname> = 'Hans';

gibt einfach mal das select bei google ein da wirste schon was finden soähnlich muss das aussehen
 
das mit select ist ja kein ding ...

problem
Zitat:
SELECT <spaltenname> + "geht spazieren" oder SELECT ""+ <spaltenname> + "geht spazieren"
FROM <tabelenname>
WHERE <spaltenname> = 'Hans'; // ich filtere ja nicht hans sondern die platzhalter variable...

möchte dann statt der platzhaltervariable.. aber hans stehen haben!!!! ... bzw..den wert den ich übergebe...

mfg
 
Wenn du es genau so haben willst, würde ich das nicht im SQL machen sondern in einer nachfolgenden Verarbeitung. Dafür ist SQL nicht gedacht.

Falls du es auf biegen und brechen so haben willst, schau dir an, welche Erweiterungen zu SQL in Access enthalten sind. Oracle stellt z.B. die Funktionen INSTR und SUBSTR zur Verfügung, mit denen sich soetwas (umständlich) lösen lässt.

Oder du schmeißt den Platzhalter aus den Strings raus, sofern du das darfst, und machst eine Spalte prefix und suffix, die du dann ohne weitere Stringoperationen an den Hans anflanschen kannst.
 
Hallo,

SELECT <spaltenname> FROM <tabelenname> WHERE <spaltenname> LIKE '%Hans%'

Mit diesem SELECT bekommst Du alle Datensätze wo Hans in <spaltenname> vorkommt.

SELECT <spaltenname> FROM <tabelenname> WHERE <spaltenname> LIKE '% geht spazieren'

Mit diesem SELECT bekommst Du alle Datensätze wo "* geht spazieren" in <spaltenname> vorkommt.

SELECT REPLACE(<spaltenname>, ' geht spazieren', '') as <spaltenname> FROM <tabelenname> WHERE <spaltenname> LIKE '% geht spazieren'

Mit diesem SELECT bekommst Du alle Datensätze wo "* geht spazieren" in <spaltenname> vorkommt. Der Ergebnisstring ist aber um " geht spazieren" gekürzt.

Hoffe du kannst Dir aus der Info was bauen ;-)

greeTz
waYan
 
Zuletzt bearbeitet:
Noch ein kleiner Hinweis anbei.. wenn du Platzhalter nicht in Form von einem bereits vorbereiteten SQL-Queries (z.B. mysqli_prepare unter PHP), sondern in Form von Text-Insert nutzt ("SELECT " + $variable + ...), dann vergiss nicht den einzufügenden String zu escapen! Andernfalls haste ne nette SQL Injection Vulnerability.
 
Pitze19888 schrieb:
das mit select ist ja kein ding ...

problem
Zitat:
SELECT <spaltenname> + "geht spazieren" oder SELECT ""+ <spaltenname> + "geht spazieren"
FROM <tabelenname>
WHERE <spaltenname> = 'Hans'; // ich filtere ja nicht hans sondern die platzhalter variable...

möchte dann statt der platzhaltervariable.. aber hans stehen haben!!!! ... bzw..den wert den ich übergebe...

mfg

verstehe ich nicht ... du musst natührrlich <spaltennamen> ohne < und > angeben wenn der name hans in der spalte Name in der tabelle menschen steht dann sieht das ganze so aus

SELECT name + "geht spazieren"
FROM menschen
WHERE name = 'Hans';

wenns das nicht war, dann sag mal welche programme / programmiersprachen du nutzt ich glaub ich hab das problem noch nicht so 100%ig verstanden
 
Irgendwie verstehe ich das Problem nicht so genau:

1.) Gibt es die Datenbank und die Daten schon. Wenn ja, dann poste einfach einmal den Inhalt bzw. einen Auszug davon.

2.) Wenn nein, dann würde ich gleich ein ordentliches Datenbankdesign machen d.h.:
1 Tabelle Personen:
AutoWert (int), Primärschlüssel
Name (Text), Unique Index

1 Tabelle Aktionen:
AutoWert (int), Primärschlüssel
Aktion (Text), Unique Index

1 Tabelle Ereignisse:
AutoWert (int), Primärschlüssel
Person (int), Unique Index auf Person und Aktion
Aktion (int), Person und Aktion ist jeweils ein Fremdschlüssel auf den Autowert der jeweiligen Tabelle

3.) Wenn du schon eine Tabelle definiert hast, mit Einträgen wie "Hans geht spazieren", dann hast du das Problem, dass nirgendwo definiert ist, was der Platzhalter ist und was der Rest. Das ist einfach nur ein fixer Textblock.

4.) Oder sind wir vielleicht alle komplett falsch unterwegs und es ist nur Hans, Franz, Sepp, Kurt, Max usw. gespeichert und "geht spazieren" kommt von deinem Programm. In dem Fall mach einfache eine Stringverkettung bzw. mit reinem SQL würde wahrscheinlich auch folgendes gehen (zumindest beim SQL Server):
select name + " geht spazieren" from Names
Wenn du es jedoch von einem Programm ansteuerst, dann mach die Stringverkettung dort und nicht auf der Datenbank. Die ist dafür nicht gedacht.
 
Zurück
Oben