Alle Felder bestimmter Tabellen nach Ausdruck du.s

Von: , 21.02.2012 11:40 Uhr

Liebe Leute,
ich habe eine SQL Datenbank mit den Tabellen tab1, tab2 und tab3. Die Tabellen sind unterschiedlich, aber jede hat einen Eintrag wdate. Nun möchte ich eine Suchfunktion auf meiner Website machen, die in 2 dieser Tabellen in allen Spalten sucht.
Folgendes müsste der Befehl machen:
- LIKE benutzen, um % und _ zuzulassen
- In den Tabellen tab1 und tab3 sollen alle Spalten durchsucht werden
- Das gebündelte Resultat aus beiden Tabellen soll nach wdate sortiert sein
- In jeder Zeile des Resultats soll ein Feld sein, das dem Namen der Tabelle entspricht, damit man herausfinden kann, woher der Eintrag stammt.

Wie würde so ein Befehl lauten?
lg
Kalsan

6 Antworten zu dieser Frage

        • Antwort von nach einem Tag 0 hilfreich
          Re: Alle Felder bestimmter Tabellen nach Ausdruck du.s

          Hallo,
          erste Frage: Welche Datenbank haben wir denn? SQL Server?

          Zweitens: Bitte mal die Struktur der drei Tabellen übersenden..
          Am besten als create table script ...
          Dann gehts weiter..

          Gruss zurück.. ich habe eine SQL Datenbank mit den Tabellen tab1, tab2 und
          tab3. Die Tabellen sind unterschiedlich, aber jede hat einen
          Eintrag wdate. Nun möchte ich eine Suchfunktion auf meiner
          Website machen, die in 2 dieser Tabellen in allen Spalten
          sucht.
          Folgendes müsste der Befehl machen:
          - LIKE benutzen, um % und _ zuzulassen
          - In den Tabellen tab1 und tab3 sollen alle Spalten durchsucht
          werden
          - Das gebündelte Resultat aus beiden Tabellen soll nach wdate
          sortiert sein
          - In jeder Zeile des Resultats soll ein Feld sein, das dem
          Namen der Tabelle entspricht, damit man herausfinden kann,
          woher der Eintrag stammt.

          • Antwort von nach einem Tag 0 hilfreich
            Re^2: Alle Felder bestimmter Tabellen nach Ausdruck du.s

            Salü Michael,
            Erste Antwort: Bin mir seitens Server nicht ganz sicher, aber ich glaube das heisst MySQL (der Typ Server, der auf XAMPP läuft).
            Zweite Antwort: In Wirklichkeit sind es gegen zehn Tabellen mit unzähligen Spalten darin, aber die darf ich nicht online stellen. Hier sind aber genauere Angaben:
            Jede Tabelle ist anders und hat eine andere Anzahl Spalten. Folgende Punkte haben alle Tabellen gemeinsam:
            - Die Einträge sind entweder im Format tinyint (boolean), int oder text
            - Jede Tabelle hat eine Spalte, die wdate heisst, und eine Spalte id
            - Es ist keine Zelle leer.
            Ein vereinfachtes Beispiel:
            tab1: id, text, titel, wdate
            Beispieleinträge: 5, Wie geht's?, Anmache, 2012-05-30
            tab3: id, wdate, verkaufen, titel, beschreibung
            Bsp.Einträge: 62, 2011-05-12, 1, Haus, Schönes Haus mit Garten
            usw.

            lg
            Kalsan

        • Antwort von nach 6 Tagen 0 hilfreich
          Re: Alle Felder bestimmter Tabellen nach Ausdruck du.s

          Also ich würde einen SQL bauen, in dem du alle zu durchsuchenden Felder miteinander konkatenierst und einen eindeutigen Spaltentrenner verwenden, damit du nicht ein falsches ergebnis durch Überschneidungen bekommst, z.B. Select 'tab1' as tabellenname, Spalte1+'|'+Spalte2+'|'+Spalte3... as Suchstring,wdate from tab1 union Select 'tab2' as tabellenname, Spalte1+'|'+Spalte2+'|'+Spalte3... as Suchstring ,wdate
          union Select 'tab3' as tabellenname, Spalte1+'|'+Spalte2+'|'+Spalte3... as Suchstring,wdate

          Damit würde ich eine temporäre Tabelle befüllen und diese dann mit Like und Wildcards durchsuchen und das Ergebnis entsprechend weiterverarbeiten. Mit Oracle bräuchtest du keine temp. Tabelle, aber ich weiss nicht, ob das auch mit SQL geht, deswegen hier der Umweg.

          Folgendes ist noch zu beachten: Alles zum Typ varchar casten, ansonsten kriegst du ein Problem bei verschiedenen Datentypen

      • Antwort von nach 7 Tagen 0 hilfreich
        Re^2: Alle Felder bestimmter Tabellen nach Ausdruck du.s

        Salü Marcus,
        Vielen Dank für deine Hilfe, aber leider bin ich mit SQL viel zu wenig vertraut um derart fortgeschrittene Dinge zu tun. Allerdings funktioniert die Lösung mit den OR und der strikten Sektionentrennung gut genug, so dass das Problem mittlerweile als gelöst betrachtet werden kann.
        lg
        Kalsan

  1. Antwort von nach 36 Tagen 0 hilfreich
    Re: Alle Felder bestimmter Tabellen nach Ausdruck du.s

    hallo,
    ich weiß jetzt nicht, ob deine datenbank die daten direkt zu sammenfassen kann oder du eine hilfstabelle brauchst.

    im prinzip brauchst du 3 select-abfragen:
    select "tab1", felder from tab1 where feld like "suche"
    für das einfügen in die hilfstabelle setzt du einfach insert into htab davor. die felddefinition muß aber stimmen.

    unter access kann man die 3 abfragen direkt mit union kombinieren. allerdings ist eine sortierung erst in einer 2. abfrage möglich.
    du müßtest die union-abfrage also als view speichern.

    alternativ kann auch dein programm die zurückgelieferten daten weiterverarbeiten.

    tschuess

    • Antwort von nach 36 Tagen 0 hilfreich
      Re^2: Alle Felder bestimmter Tabellen nach Ausdruck du.s

      Vielen Dank für eure Antworten. Der Befehl JOIN hat mir weitergeholfen.
      lg
      Kalsan

      Jetzt auf diese Frage antworten.