Ankündigung

Einklappen
Keine Ankündigung bisher.

* 2 tabellen -> mysql doppel select if und else???

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • * 2 tabellen -> mysql doppel select if und else???

    * 2 tabellen -> mysql doppel select if und else???

    hallo, ich rätsel schon seit einiger zeit wie ich das anstellen soll.

    ich habe 2 tabellen:

    tabelle1:
    Code:
    id | name
    1 |peter
    2 |susi
    3 |sven
    4 |mario
    5 |anna
    6 |luise
    7 |christian
    8 |michael
    9 |clara
    tabelle2:
    Code:
    farbe |zahl
    rot  |4
    blau |8
    grün |1
    gelb |3
    nun möchte ich nur die namen ausgeben, deren id in der tabelle 2 als zahlen vorkommen:

    bei meinem beispiel:
    ausgabe: mario,michael,peter,sven

    wie bewerkstellige ich dies ...
    gibt es eine if else funktion bei der abfrage? - oder ist
    der ansatz:
    SELECT * FROM tabelle1 where id exist (select from tabelle2 zahl)

    danke an euch ...

    sandra

  • #2
    soweit ich weiß werden bei dem normalen join nur die zeilen rausgeholt, für die eine kombination vorhanden ist. es müsste also was in der sein...

    select distinct name from tabelle1, tabelle2 where tabelle1.id = tabelle2.zahl

    so oder so ähnlich. habe das jetzt nicht getestet.

    Kommentar


    • #3
      juche das funktioniert schon mal fast ...

      danke ...

      das problem welches ich aber übersah ist das die tabelle 2 auch doppelte einträge beinhaltet ...
      somit gibt er mir einige einträge doppelt aus.

      das DISTINCT funktioniert hier an dieser stelle leider nicht ... warum weiß ich nicht.

      Kommentar


      • #4
        habe auch

        select distinct name from tabelle2, tabelle1 where tabelle1.id = tabelle2.zahl
        anstatt:
        select distinct name from tabelle1, tabelle2 where tabelle1.id = tabelle2.zahl

        ausprobiert, doch es sind immer noch doppelte einträge vorhanden

        Kommentar


        • #5
          Ich habe ein ähnliches Beispiel zusammen gestellt und es gibt keine "doppelten" Namen mit DISTINCT. Zeigt doch mal Deine SQL-Ausgabe.

          Code:
          CREATE TABLE namen (
           id INT NOT NULL,
           name VARCHAR(10)
          );
          
          CREATE TABLE farben (
           zahl INT NOT NULL,
           farbe VARCHAR(10)
          );
          
          INSERT INTO namen ( id, name ) VALUES
          ( 1, 'fritz'),
          ( 2, 'peter'),
          ( 3, 'fritz');
          
          INSERT INTO farben ( zahl, farbe ) VALUES
          ( 1, 'gelb'),
          ( 1, 'blau'),
          ( 2, 'weis'),
          ( 3, 'rot');
          
          SELECT DISTINCT name 
            FROM namen n, farben f
           WHERE n.id = f.zahl;
           
          +-------+
          | name  |
          +-------+
          | fritz |
          | peter |
          +-------+
          2 rows in set (0.06 sec)
          Grüße
          Thomas

          Kommentar


          • #6
            eventuell liegt es daran das ich noch viel mehr spalten in der tabelle habe und
            Select * ausführe ...

            gibt es denn die möglichkeit Select * tabelle1 und Select name tabelle2 auszuführen?

            danke fürs helfen

            Kommentar


            • #7
              Zitat von sandrasandra Beitrag anzeigen

              gibt es denn die möglichkeit Select * tabelle1 und Select name tabelle2 auszuführen?
              Ehrlich gesagt, verstehe ich Deine Frage nicht. Das Beste wird sein, wenn Du die tatsächlichen Tabellen plus echten SQL, sowie das gewünschte Ergebnis zeigst. Das Problem ist bestimmt lösbar. "Trau Dich.."

              Grüße
              Thomas

              Kommentar


              • #8
                danke thomas und madhatter, muss jetzt leider zu bett ... morgen trau ich mich bestimmt ... danke schon mal sehr für die hilfe

                Kommentar

                Lädt...
                X