tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
361
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    polarbear11 polarbear11 ist offline Grünschnabel
    Registriert seit
    Jun 2005
    Beiträge
    2
    Hallo Gemeinde,

    ich möchte expr IN in einer WHERE clause wie folgt benutzen:
    SELECT *
    FROM t1
    WHERE Id IN (1,2,3)


    alledings in einer etwas mehr flexibleren Form:

    SELECT a.*
    FROM t1 a, t2 b
    WHERE a.Id IN (b.IdList) AND b.ID = 1


    Die Spalte b.IdList für b.Id = 1 enthält den Wert '1,2,3' (varchar spalte).

    Das soll das gleiche Ergebnis liefern wieSELECT * FROM t1 WHERE Id IN (1,2,3). Tut's aber nicht. Hat jemand eine Idee?

    Gruss und Dank
    Al
     

  2. #2
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    Das ist meines Wissens nicht möglich.
    Eine Alternative wäre, die Datenbank zu normalisieren, die Assoziation also in einer weiteren Tabelle auszulagern und mit einem Subquery zu arbeiten.
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

  3. #3
    polarbear11 polarbear11 ist offline Grünschnabel
    Registriert seit
    Jun 2005
    Beiträge
    2
    Zitat Zitat von hpvw
    Das ist meines Wissens nicht möglich.
    Eine Alternative wäre, die Datenbank zu normalisieren, die Assoziation also in einer weiteren Tabelle auszulagern und mit einem Subquery zu arbeiten.
    Vielen Dank für die Antwort,

    eine weitere Intersektion geht natürlich immer; bedeutet aber auch höheren Verwaltungaufwand, den ich in meinem speziellen Szenario gut hätte umgehen können, wenn IN die o.a. Syntax unterstützt hätte. Da die Daten nunmal in dieser Form (b.IdList = '1,2,3') vorliegen, dachte ich, es gäbe eine Möglichkeit, evtl. zu casten o.ä., so dass IN damit klarkommt.

    Anscheinend ist IN für variable Argumente der o.a. Art nicht ausgelegt!? Oder, weiss sonst jemand noch Rat?

    Grüsse
    Al
     

  4. #4
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    IN ist für "Aufzählungen" ausgelegt. Der VARCHAR, den Du übergibst ist das einzige Element, welches Du aufzählst.
    Ich habe bei den Zeichenketten-Funktionen keine Funktion gefunden, die einen CHAR splitten kann, daher wird es mit IN wohl nicht gehen.
    Du könntest jedoch versuchen Dir einen Vergleich (ohne IN) zu überlegen, bei dem Du mit LOCATE oder einem regulären Ausdruck arbeitest.

    Gruß hpvw
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

Ähnliche Themen

  1. VB 2008 expr. Bräuchte mal Hilfe
    Von blackgear im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 17.12.08, 20:48
  2. SELECT DISTINCT (SQL-Expr)
    Von Alfred_ im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 13.10.06, 07:16
  3. eMails von Outlook Expr zu Thunderbird
    Von Crai im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 10.10.05, 18:13
  4. reg Expr. für $_egal
    Von Major im Forum PHP
    Antworten: 5
    Letzter Beitrag: 23.05.03, 20:03
  5. reg. expr. suchen
    Von METATR0N im Forum PHP
    Antworten: 5
    Letzter Beitrag: 03.05.02, 07:55