Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit INNER JOIN

Einklappen

Neue Werbung 2019

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

  • Problem mit INNER JOIN

    Hallo!
    Ich habe ein kleines Problem mit einem INNER JOIN Query. Kann mir jemand sagen, wo mein Fehler liegt? Wäre euch für eure Hilfe sehr dankbar.
    MfG, Andy

    DATENBANK
    Code:
    CREATE TABLE `categories` (
      `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT,
      `category` VARCHAR( 30 ) NOT NULL ,
      PRIMARY KEY ( `id` ) ,
      UNIQUE (`category`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    CREATE TABLE `courses` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `title` varchar(50) NOT NULL default '',
      `date` int(11) NOT NULL default '0',
      `offerer` varchar(30) NOT NULL default '',
      `place` varchar(30) NOT NULL default '',
      `country` varchar(2) NOT NULL default '',
      `commissary_id` int(10) NOT NULL default '0',
      `category_id` int(10) NOT NULL default '0',
      PRIMARY KEY  (`id`),
      KEY `commissary_id` (`commissary_id`),
      KEY `category_id` (`category_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    INNER JOIN
    Code:
    SELECT 
        title, category, offerer, place, country 
    FROM
        courses
    INNER JOIN
        categories 
    ON
        courses.category_id = categories.id
    WHERE
        courses.offerer = `Avexis` AND courses.place = `Dortmund` 
    ORDER BY 
        courses.title DESC 
    LIMIT 2

  • #2
    Soll-Zusatnd und Ist-Zustand ?

    Kommentar


    • #3
      Enschuldige, habe ich wohl vergessen. Also er soll natürlich eine Ausgabe machen. Daten sind auch da, aber es gibt immer den Fehler cannot found column 'Avexis'. Dabei fällt mir gerade auf, dass der Vergleichswert ja mit ' und nicht mit ` gequotet werden muss. Jedoch bleibt hier für mich die Frage, ob ich auch numerische Werte mit ' quoten darf. Habe es gerade mal getestet und es funktioniert, aber ist es wirklich so ok?
      MfG, Andy

      Kommentar


      • #4
        Ja, das ist genauso ok wie bei PHP echo '2' + 2;

        Kommentar


        • #5
          Danke für deine schnelle Antwort.

          Ich nehme nun einfach mal an, dass du mir wohl damit sagen willst, dass es nicht sehr schön ist, aber funktioniert.

          Ich habe allerdings noch eine weitere Frage. Nehmen wir mal an ich hätte nur einen Datensatz aus der Datenbank mit Hilfe dieser Abfrage geholt und den Datensatz in einem Object gespeichert. Wie ist es jetzt am geschicktesten Möglich die Daten wieder auseinander zu klamüsern und wieder in die Datenbank zu schreiben? Der Schlüssel des Datensatzes wird natürlich nicht verändert. Ist das auch mit Joins möglich?

          MfG, Andy

          Kommentar


          • #6
            Das ORDER BY und LIMIT kannst Du bei einem multi-table UPDATE nicht verwenden.
            Aber Du kannst ja zusätzlich noch die entsprechenden ids abfragen. Dann funktioniert zum Beispiel so etwas wie:
            Code:
            UPDATE
              courses, categories
            SET
              title = '',
              category = '',
              offerer = '',
              place = '',
              country = ''
            WHERE
              courses.category_id = 4  
              AND courses.category_id = categories.id
              AND courses.offerer = 'Avexis'
              AND courses.place = 'Dortmund'

            Kommentar


            • #7
              Guten Morgen.

              Ich danke dir. Du hast mir sehr geholfen. Dass das ORDER BY und LIMIT nicht funktionieren ist ja klar, macht ja auch wenig Sinn. So ist es mir aber nun möglich die Daten aus einem Objekt, dass einen Datensatz aus der Datenbank repräsentiert wieder zurück in die Datenbank zu schreiben. Das speichern von Datensätzen, die noch nicht in der Datenbank gespeichert sind, müsste dann ja genauso funktionieren. Sehe ich das richtig?

              MfG, Andy

              Kommentar


              • #8
                Zitat von #Avedo
                Dass das ORDER BY und LIMIT nicht funktionieren ist ja klar
                Naja, bei single-table updates geht das.

                Vielleicht magst Du Dir bestehende Mapper anschauen.
                siehe:
                Propel
                Doctrine - Free Open Source PHP ORM
                Generischer OR-Mapper :: Adventure PHP Framework (APF)
                und sicherlich noch hundert andere

                Kommentar

                Lädt...
                X