Antworten auf deine Fragen:
Neues Thema erstellen

SQL like ganzzahlen und Trennzeichen

Philipp88

Nicht mehr ganz neu hier

Hallo,

kann man mittels MySql Like nach Ganzzahlen suchen wo in der selben Spalte eventuell noch andere Zeichen sind?

Zum Beispiel sehen die Daten meiner Datenbank von der Spalte so aus:
Datensatz 1: 1; 35; 16
Datensatz 2: 2; 5; 100; 6

Wenn ich den Befehl
PHP:
WHERE spalte LIKE '%1%'
schreibe, gibt er mir ja alle Zahlen die mit 1 beginnen aus.
Also den Datesatz 1 und 2:uhm:
Ich möchte aber nur die Datensätze ausgegeben haben wo nur die Ganzzahl eins vorkommt.

Ist sowas möglich, wenn ja wie?

Würde mich auf Antworten freuen:)

Guß und danke im voraus
Philipp
 

schnemat

Aktives Mitglied

AW: SQL like ganzzahlen und Trennzeichen

Hi Philipp,

sorry, verstehe Deine Frage nicht so recht.

Einen "Like-Operator" verwendet man in der Regel für eine String-Abfrage. Wenn Du auf Zahlen prüfen möchtest die die Ganzzahl 1 enthalten, müsstet Du nach "= 1" abfragen.

Um aber einen guten SQL schreiben zu können, müsste man wissen, wie Deine Tabelle aufgebaut ist. Welche Spaltennamen und Datentypen ... etc.

Kannst ja, wenn Du magst, etwas mehr zu Deiner Tabelle schreiben ;-)

Gruß
Matthias
 

schnemat

Aktives Mitglied

AW: SQL like ganzzahlen und Trennzeichen

Hi Philipp,

nochmal ich :) mit einem Nachtrag.

Wenn ich Deine Frage richtig verstanden habe, stehen die von Dir genannten Daten alle in einer Spalte. Das kommt mir seltsam vor. Schreibe doch hier bitte mal, warum das so ist.

Gruß
Matthias
 

Philipp88

Nicht mehr ganz neu hier

AW: SQL like ganzzahlen und Trennzeichen

Danke für die schnelle Antwort :)

Die Spalte ist in Varchar. Es sollen verschiedene Bilder auf verschiedenen Seiten angezeigt werden. Diese Zahlen sind die ID's der Seiten diese durch "; " getrennt sind. Hoffe du verstehst jetzt was ich meine,
Durch Like will ich die ID's aus der Zeichenkette rausbekommen.
 

hub

nicht ganz neu hier

AW: SQL like ganzzahlen und Trennzeichen

Moin moin,
wenn du die Zahlen mit Komma trennst, kannst du die MySql - Funktion "find_in_set" nutzen.
Findest du in der MySql Beschreibung unter 12.3 Stringfunktionen ...

Gruß Ulli
 

Duddle

Posting-Frequenz: 14µHz

AW: SQL like ganzzahlen und Trennzeichen

Oh Gott.
Besteht diese Datenbank schon länger oder bist du noch im Entwicklungs-Stadium? Falls letzteres, bitte überdenke deinen Entwurf. Du würdest hier im Forum genügend Leute finden, die gern über das Modell schauen würden (*hust*DuddleAllenVoran*hust*). Wäre die DB richtig entworfen würdest du solche Probleme nicht haben.

Falls das Ding schon länger in Betrieb ist gib dem dafür verantwortlichen Programmierer bitte eine (imaginäre) Ohrfeige.


Duddle
 

Philipp88

Nicht mehr ganz neu hier

AW: SQL like ganzzahlen und Trennzeichen

ich bin noch in der Entwicklung. Für Tipps bin ich sehr dankbar. Also es gibt 2 (die erste mit Bildern, zweite mit Kunden) Tabellen mit einer mm-verknüpfung. Die mm-Tabelle besteht aus den Spalten "id_local", "id_foreign", "starttime", "endtime" und der Spalte "pid" mit den ids der Seiten.
 

hub

nicht ganz neu hier

AW: SQL like ganzzahlen und Trennzeichen

@Philipp: Nicht entmutigen lassen, Übung macht den Meister ;) .
@Duddle: Dein Vorschlag wäre? Warum lässt du ihn mit so einer Antwort verhungern?
 

Duddle

Posting-Frequenz: 14µHz

AW: SQL like ganzzahlen und Trennzeichen

Ist "mm"-Verknüpfung als n:m-Kardinalität zu verstehen? Oder was genau heißt das?

Also die Spalte pid hat die Ids von Seiten auf deren dieses Bild vorkommt? Oder sind in diesem Feld alle Ids von Bildern für diese Seite?

Das Prinzip ist jedenfalls sehr einfach: falls ein Bild in mehreren Seiten vorkommen kann (0 oder mehr) und falls eine Seite mehrere Bilder haben kann (0 oder mehr) ist das eine n:m-Kardinalität. Diese werden in der Regel durch eine Hilfs-Tabelle umgesetzt, siehe http://de.wikipedia.org/wiki/Kardinalit%C3%A4t_(Datenbankmodellierung)#n:m_2.

Konkret hieße das, falls du eine Tabelle für Bilder und eine für Seiten hast, baust du noch eine Tabelle "BilderSeiten-Zuweisung" o.ä. auf, die als eine Art Verzeichnis verstanden werden kann. Noch konkreter im Beispiel:
Code:
Seiten-Tabelle:
id | bezeichnung
1  | foo
2  | bar
3  | baz

Bilder-Tabelle:
id  | url
42  | bla.jpg
23  | blub.png
90  | hallowelt.jpg

BilderSeiten-Zuweisung-Tabelle:
seiten_id | bild_id
1         | 90
1         | 23
2         | 90
3         | 42
3         | 23
3         | 90
Du solltest daraus leicht lesen können welches Bild auf welcher Seite benutzt wird. Die beiden ids bilden dann einfach einen Verbundschlüssel um die Zeile eindeutig zu machen.


Duddle
 

Philipp88

Nicht mehr ganz neu hier

AW: SQL like ganzzahlen und Trennzeichen

@hub Danke für deine netten Worte :)
Hast du für mich ein Tipp wie ich diese Tabelle verbessern kann?
Kannst du mir bitte ein Beispiel für das field_in_set geben ?

edit: Danke Duddle. ja ich meine m-n zwischen Bilder und Kunde. Also noch eine zwischen Tabelle (insgesamt gibt's dann zwei)
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: SQL like ganzzahlen und Trennzeichen

Wie ist denn die Verbindung zwischen Kunden und Bildern und Seiten zu verstehen? Hat ein Kunde mehrere Seiten und jede Seite hat mehrere Bilder? Ich bin etwas misstrauisch aufgrund des vorher benannten Entwurf-Fehlers, deshalb frage ich explizit danach.


Duddle
 

hub

nicht ganz neu hier

AW: SQL like ganzzahlen und Trennzeichen

Kann ich. Der elegantere und sichere Weg ist der, den Duddle dir aufgezeigt hat. Zum Testen mit deiner Vorlage z.B. so: "SELECT * FROM deine_tabelle WHERE field_in_set( dein_such_wert, deine_spalte) > 0"
So werden alle Zeilen deiner Tabelle ausgegeben, in der "dein_such_wert" in der Spalte "deine_spalte" enthalten ist. suchst du jetzt den wert 1, wird die Abfrage bei "12, 23" keinen Treffer anzeigen, aber bei "1, 2, 3".
Einfach ausprobieren und experimentieren. Das ist der schelle Weg.
Ich würde aber auch, so wie Duddle es beschrieben hat, in Betracht ziehen, kommt sicher aber auch auf den Umfang deines Projekts an.
 

Philipp88

Nicht mehr ganz neu hier

AW: SQL like ganzzahlen und Trennzeichen

Also die Bilder sind sowas in der Art Werbung der einzelnen Kunden (ein Kunde kann mehrere Bilder beantragen). Die Verknüpfungstabelle hat zudem noch die Spalte start- und endtime wo steht wie lange dieses Bild angezeigt wird. Die ids sind die verschiedenen Unterseiten der Webseite wo das Bild angezeigt werden soll.
 

Duddle

Posting-Frequenz: 14µHz

AW: SQL like ganzzahlen und Trennzeichen

Okay, korrigier mich wenn ich es falsch formuliere:
Jeder Kunde kann mehrere Bilder haben. Jedes Bild gehört exakt einem Kunden (anders kann ich es mir gerade nicht vorstellen). Das ist 1:m zwischen Kunde und Bild. Nebenbei gibt es noch irgendwelche Zeitangaben.

Jede Seite kann mehrere Bilder haben. Jedes Bild kann auf mehreren Seiten stehen. Das ist n:m zwischen Seite und Bild.

Seiten sind, wenn ich es richtig verstehe, nicht direkt mit einem Kunden verbunden.

Die 1:m-Kardinalität wird per Fremdschlüssel in der Bilder-Tabelle (die m-Seite) aufgelöst. Hier kommt auch das Zeit-Attribut rein (es sei denn, diese Zeitangaben sind nicht "pro Bild" sondern "pro Bild auf einer Seite", dann gehört es in die unten stehende Hilfs-Tabelle).

Die n:m wird wie gesagt per Hilfs-Tabelle aufgelöst.

Das Endergebnis sollte dann ungefähr so aussehen:
Code:
Kunden:
id | weitere attribute | usw

Bilder:
id | weitere attribute | zeit | kunden_id

Seiten:
id | weitere attribute | usw

BilderSeiten:
bild_id | seite_id
Fertig.


Duddle
 
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

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben