Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Jointabelle gibt mir nicht aus was ich möchte

Einklappen

Neue Werbung 2019

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

  • #16
    Wenn die Namen in für Fachgebiete in beiden Tabellen immer gleich sein sollen, dann die Spalte löschen. Wenn nicht dann nicht

    Kommentar


    • #17
      Zitat von akretschmer Beitrag anzeigen
      versuch mal bitte, via create table & insert nachvollziehbare beispiele zu liefern und auch das, was rauskommen soll.
      meinst du so was ?

      CREATE TABLE `hmfachgebiet` (
      `id` int( 11 ) NOT NULL AUTO_INCREMENT ,
      `hmfachgebiet` varchar( 30 ) NOT NULL ,
      `fachgebiet_id` int( 11 ) NOT NULL ,
      `username` varchar( 20 ) NOT NULL ,
      PRIMARY KEY ( `id` )
      ) ENGINE = InnoDB DEFAULT CHARSET = utf8;

      @Spamversender
      ich habe mal gelöscht, nützt aber nichts

      Kommentar


      • #18
        Zitat von Michael17 Beitrag anzeigen
        meinst du so was ?

        CREATE TABLE `hmfachgebiet` (
        `id` int( 11 ) NOT NULL AUTO_INCREMENT ,
        `hmfachgebiet` varchar( 30 ) NOT NULL ,
        `fachgebiet_id` int( 11 ) NOT NULL ,
        `username` varchar( 20 ) NOT NULL ,
        PRIMARY KEY ( `id` )
        ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
        Ja, Du bist auf dem richtigen Weg. Wozu dienen die felder

        Code:
        `hmfachgebiet` varchar( 30 ) NOT NULL ,
        `fachgebiet_id` int( 11 ) NOT NULL ,
        Du hast doch eine andere Tabelle dafür, hier brauchst Du nur einen Foreign Key. Wo ist der?


        @Spamversender
        ich habe mal gelöscht, nützt aber nichts
        *seufz*
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #19
          Zitat von akretschmer Beitrag anzeigen
          Ja, Du bist auf dem richtigen Weg. Wozu dienen die felder

          Code:
          `hmfachgebiet` varchar( 30 ) NOT NULL ,
          `fachgebiet_id` int( 11 ) NOT NULL ,
          Du hast doch eine andere Tabelle dafür, hier brauchst Du nur einen Foreign Key. Wo ist der?




          *seufz*
          Foreign Key sagt mir gerade nichts
          und hmfachgebiet habe ich in reintext nur den Namen des Fachgebietes gespeichert und
          fachgebiet_id braucht man ja um zwei Tabellen miteinander zu verbinden

          Kommentar


          • #20
            Foreign Key heißt Fremdschlüssel. Der ist ähnlich wie ein Primary Key zu definieren, aber ich benutze diese Möglichkeit nie weil sie mMn nichts bringt. Das heißt nur, dass in deinem Fall die Spalte fachgebiet_id der Tab. hmfachgebiet mit der Spalte id der Tab. fachgebiet Verknüpft ist. Wenn also in hmfachgebiet als fachgebiet_id 3 steht, dann schaust du bei fachgebiet dort wo die ID 3 ist und hast den Namen des Fachgebiets

            B2T: Stell dir mal vor, du hast immer das Fachgebiet Elektronik verwendet, und jetzt möchtest du dass es Elektrizität heißt. Also müsstest du in 2 Tabellen ads ändern. Stell dir vor, du brauchst die Fachgebiete in mehr als 2 Tabellen. Das könnte da schon schwer werden alles zu verändern. Deswegen die Fachgebiete-Tabelle. Dort wird einem Fachgebiet eine ID zugeordnet, und überall wo fachgebiete benötigt werden wird die ID statt der Name verwendet. Einmal den Namen in der Fachgebiete-Tabelle geändert, überall geändert

            Kommentar


            • #21
              Zitat von Spamversender Beitrag anzeigen
              Foreign Key heißt Fremdschlüssel. Der ist ähnlich wie ein Primary Key zu definieren,
              Nein.

              aber ich benutze diese Möglichkeit nie weil sie mMn nichts bringt.
              Kein Problem, daß Du nur mageres Halbwissen hast. Aber solche Äußerungen solltest Du dann besser lassen.
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar


              • #22
                Zitat von Michael17 Beitrag anzeigen
                Foreign Key sagt mir gerade nichts
                http://www.insidesql.org/blogs/cmu/s...l-foreign-keys
                PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                Kommentar


                • #23
                  Zitat von Spamversender Beitrag anzeigen
                  Foreign Key heißt Fremdschlüssel. Der ist ähnlich wie ein Primary Key zu definieren, aber ich benutze diese Möglichkeit nie weil sie mMn nichts bringt. Das heißt nur, dass in deinem Fall die Spalte fachgebiet_id der Tab. hmfachgebiet mit der Spalte id der Tab. fachgebiet Verknüpft ist. Wenn also in hmfachgebiet als fachgebiet_id 3 steht, dann schaust du bei fachgebiet dort wo die ID 3 ist und hast den Namen des Fachgebiets

                  B2T: Stell dir mal vor, du hast immer das Fachgebiet Elektronik verwendet, und jetzt möchtest du dass es Elektrizität heißt. Also müsstest du in 2 Tabellen ads ändern. Stell dir vor, du brauchst die Fachgebiete in mehr als 2 Tabellen. Das könnte da schon schwer werden alles zu verändern. Deswegen die Fachgebiete-Tabelle. Dort wird einem Fachgebiet eine ID zugeordnet, und überall wo fachgebiete benötigt werden wird die ID statt der Name verwendet. Einmal den Namen in der Fachgebiete-Tabelle geändert, überall geändert
                  Als bis zu dem Punkt hast du vollkommen Recht, ich war auch schon am Überlegen ob ich den Name auch mitübergeben soll... das ändere ich mal gerade ab
                  die fachgebiet_id lasse ich für die Übereinstimmung drinne

                  Kommentar


                  • #24
                    Zitat von erc Beitrag anzeigen
                    Der erste Schritt ist das Problem präzise zu formulieren. Das was du da schreibst ist das:

                    PHP-Code:
                    SELECT FROM hmfachgebiet WHERE username  != '$name' 
                    Das was du ̶w̶̶a̶̶h̶̶r̶̶s̶̶c̶̶h̶̶l̶̶i̶̶c̶̶h̶̶ willst ist das:

                    PHP-Code:
                    SELECT
                        
                    *
                    FROM
                        fachgebietenliste a LEFT JOIN
                        hmfachgebiete b ON 
                    (a.fachgebiet_id b.fachgebiet_id AND b.username '$name')
                    WHERE
                        b
                    .fachgebiet_id IS NULL 
                    *edit* ̶w̶̶a̶̶h̶̶r̶̶s̶̶c̶̶h̶̶l̶̶i̶̶c̶̶h̶̶
                    wäre der Schreibfehler nicht gewesen, hätte es geklappt
                    so geht es letztentlich mit dem auslesen
                    Code:
                    SELECT
                        		*,
                        		a.fachgebiet_id
                    		FROM
                        		fachgebietenliste a LEFT JOIN
                        		hmfachgebiet b ON (a.fachgebiet_id = b.fachgebiet_id AND b.username = '$name')
                    		WHERE
                        		b.fachgebiet_id IS NULL
                    aber die Tabellen habe ich auch noch bereinigt


                    Allen recht herzlichen Dank für die Hilfe und Unterstützung
                    Jetzt hat sich ein neues problem aber dazu mache ich lieber ein neues Thread auf

                    Kommentar

                    Lädt...
                    X