mike: leer tabelle mit anzeigen hilfe???

Hallo,

ich habe 3 tabellen , wobei die tabelle 3 schon mal leere
datensätze haben kann.

warum zeigt dann dieser datensatz für alle 3 tabellen keine daten an,
obwohl die ersten beiden datensätze unter z.b id=1 daten
besitzen?

was muss ich ändern?

select * from table_1 as a,table_2 as b,table_3 as c
where a.id = '1' and b.id = '1' and c.id='1'

vielen dank

mfg mike

  1. Hallo,

    ich habe 3 tabellen , wobei die tabelle 3 schon mal leere
    datensätze haben kann.

    warum zeigt dann dieser datensatz für alle 3 tabellen keine daten an,
    obwohl die ersten beiden datensätze unter z.b id=1 daten
    besitzen?

    was muss ich ändern?

    select * from table_1 as a,table_2 as b,table_3 as c
    where a.id = '1' and b.id = '1' and c.id='1'

    vielen dank

    mfg mike

    Hallo Mike,

    weil Du nur Records extrahieren willst, die in Tabelle a UND b UND c eine id='1' besitzen... es gibt aber kein Record auf welchen das zutrifft, wenn zumindest eine Tabelle leer ist oder keinen Eintrag mit id='1' hat.
    War beabsichtigt, dass Du alle Felder aus allen Tabellen ausgibst?? Das machst Du nämlich...

    Gruß
    Gizmo29

    1. mmh ich brauche verschiedene datensätze und weis leider nicht vorher ob die tabelle in diesem datensatz leer ist,und möchte das nicht immer vorher abprüfen, im prinzip sollte jeder ausgewählte datensatz
      die daten anzeigen die er besitzt

      Hallo,

      ich habe 3 tabellen , wobei die tabelle 3 schon mal leere
      datensätze haben kann.

      warum zeigt dann dieser datensatz für alle 3 tabellen keine daten an,
      obwohl die ersten beiden datensätze unter z.b id=1 daten
      besitzen?

      was muss ich ändern?

      select * from table_1 as a,table_2 as b,table_3 as c
      where a.id = '1' and b.id = '1' and c.id='1'

      vielen dank

      mfg mike

      Hallo Mike,

      weil Du nur Records extrahieren willst, die in Tabelle a UND b UND c eine id='1' besitzen... es gibt aber kein Record auf welchen das zutrifft, wenn zumindest eine Tabelle leer ist oder keinen Eintrag mit id='1' hat.
      War beabsichtigt, dass Du alle Felder aus allen Tabellen ausgibst?? Das machst Du nämlich...

      Gruß
      Gizmo29

      1. Moin!

        mmh ich brauche verschiedene datensätze und weis leider nicht vorher ob die tabelle in diesem datensatz leer ist,und möchte das nicht immer vorher abprüfen, im prinzip sollte jeder ausgewählte datensatz
        die daten anzeigen die er besitzt

        Dann brauchst du einen OUTER JOIN. Bei dem wird eine Tabelle genommen, und aus einer zweiten Tabelle alles zugeordnet, was man zuordnen kann - das kann auch mal nichts sein, die Spalten bleiben dann eben leer.

        Lies mal eine MySQL-Anleitung dazu, zum Beispiel:
        http://www.little-idiot.de/mysql/mysql-118.html

        Da steht eigentlich ziemlich genau drin, was du wissen mußt.

        - Sven Rautenberg

        1. viele dank

          Moin!

          mmh ich brauche verschiedene datensätze und weis leider nicht vorher ob die tabelle in diesem datensatz leer ist,und möchte das nicht immer vorher abprüfen, im prinzip sollte jeder ausgewählte datensatz
          die daten anzeigen die er besitzt

          Dann brauchst du einen OUTER JOIN. Bei dem wird eine Tabelle genommen, und aus einer zweiten Tabelle alles zugeordnet, was man zuordnen kann - das kann auch mal nichts sein, die Spalten bleiben dann eben leer.

          Lies mal eine MySQL-Anleitung dazu, zum Beispiel:
          http://www.little-idiot.de/mysql/mysql-118.html

          Da steht eigentlich ziemlich genau drin, was du wissen mußt.

          • Sven Rautenberg
  2. Hallo,

    hi

    select * from table_1 as a,table_2 as b,table_3 as c
    where a.id = '1' and b.id = '1' and c.id='1'

    wenn table_3 leer ist, gibt es auch keine c.id='1', darum ist der join der tabellen leer.

    vielen dank

    mfg mike

    lg aw

  3. Hallo,

    ich habe 3 tabellen , wobei die tabelle 3 schon mal leere
    datensätze haben kann.

    warum zeigt dann dieser datensatz für alle 3 tabellen keine daten an,
    obwohl die ersten beiden datensätze unter z.b id=1 daten
    besitzen?

    was muss ich ändern?

    select * from table_1 as a,table_2 as b,table_3 as c
    where a.id = '1' and b.id = '1' and c.id='1'

    vielen dank

    mfg mike

    1. Sorry für den kurzen Mißgriff jetzt, plötzlich war das Formular weg ???

      Also:
      Als erstes: Tabellen verknüpfen in etwa so:

      select * from table_1 as a,table_2 as b,table_3 as c
      where a.id_tab2 = b.id and b.id_tab3 = c.id
        and a.id = '1' and b.id = '1' and c.id='1'

      Wenn Du vorher weißt, daß in table_3 manchmal nichts passendes findest, dann mit einem OUTER JOIN zwischen b und c.

      Ansonsten empfehle ich mal Grundlagen von SQL zu lesen.
      Falls Du evtl. Detailfragen hast, bräuchte ich eine Info, welche DB Du benutzt.

      Gruß Frank

  4. Hi,

    ich habe 3 tabellen , wobei die tabelle 3 schon mal leere
    datensätze haben kann.

    wie wird ein "leerer" Datensatz in diesem Falle dargestellt?

    warum zeigt dann dieser datensatz für alle 3 tabellen keine daten an,
    obwohl die ersten beiden datensätze unter z.b id=1 daten
    besitzen?

    Weil so, wie Du das anforderst, nur Zeilen geliefert werden, bei denen
    alle drei Tabellen einen Inhalt liefern können.

    select * from table_1 as a,table_2 as b,table_3 as c
    where a.id = '1' and b.id = '1' and c.id='1'

    Wie viele Treffer pro Tabelle erwartest Du ungefähr?

    Falls "id" ein Primärschlüssel ist, dann macht Dein Verfahren so Sinn ...
    falls nicht, gäbe es bessere Alternativen.

    Viele Grüße
          Michael

    1. Hi,

      ich habe 3 tabellen , wobei die tabelle 3 schon mal leere
      datensätze haben kann.

      wie wird ein "leerer" Datensatz in diesem Falle dargestellt?

      es wir kein datensatz angezeigt,und das ist das problem,
      es sollte alles was zu diesem datensatz vorhanden ist
      trotzdem angezeigt werden

      warum zeigt dann dieser datensatz für alle 3 tabellen keine daten an,
      obwohl die ersten beiden datensätze unter z.b id=1 daten
      besitzen?

      Weil so, wie Du das anforderst, nur Zeilen geliefert werden, bei denen
      alle drei Tabellen einen Inhalt liefern können.

      select * from table_1 as a,table_2 as b,table_3 as c
      where a.id = '1' and b.id = '1' and c.id='1'

      Wie viele Treffer pro Tabelle erwartest Du ungefähr?

      tausende datensätze mit ca.10 spalten

      Falls "id" ein Primärschlüssel ist, dann macht Dein Verfahren so Sinn ...
      falls nicht, gäbe es bessere Alternativen.

      mfg.mike

      1. Hi Mike,

        wie wird ein "leerer" Datensatz in diesem Falle
        dargestellt?
        es wir kein datensatz angezeigt,und das ist das
        problem,

        ich wiederhole meine Frage:

        Wie stellst _Du_ einen (semantisc) "leeren" Datensatz
        innerhalb Deiner _Datenbanktabelle_ dar? (Davon hängt
        ab, mit welchem SQL-Statement Du Dein Ziel erreichen
        kannst.)

        Wie viele Treffer pro Tabelle erwartest Du
        ungefähr?
        tausende datensätze mit ca.10 spalten

        Auch diese Frage scheint bei Dir nicht angekommen
        zu sein:

        Wie viele Treffer mit exakt der von Dir explizit
        angegebenen ID erwartest Du im Schnitt bei Deiner
        Abfrage?
        Falls das ungefähr ein Treffer ist oder nicht viel
        mehr, dann ist Deine Vorgehensweise im Prinzip
        sinnvoll; sind es aber wirklich tausende _pro ID_,
        solltest Du keinen JOIN verwenden (weil Du dann
        Milliarden von Treffern erzielen würdest).

        Viele Grüße
              Michael