SELECT und doppelte Datensätze

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

  • SELECT und doppelte Datensätze

    Hi Leute,

    hab mal wieder ein Problem...;-)

    Zwei Tables, gesucht wird mit Volltextsuche über zwei Felder (eine Überschrift im ersten Table und einem Text im 2. Table) Es sind nun Datensätze vorhanden, die zwar eine unterschiedliche ID haben, jedoch die gleiche Überschrift. Wie schaffe ich es nur die Datensätze zu bekommen die sowohl unterschiedliche ID haben als auch unterschiedliche überschriften??? Mit DISTINCT kam ich zu keinem Erfolg...

    SELECT DISTINCT table1.headline, table1.id, table2.text FROM table1, table2 WHERE .... ORDER BY table1.headline ASC LIMIT $offset, 20

    Hat jemand ein Vorschlag??

    Greetz,
    Bobby

  • #2
    Probiers mal so:

    SELECT table1.headline, table1.id, table2.text FROM table1, table2 WHERE (table1.id<>table2.id AND table1.headline<>table2.headline) ORDER BY table1.headline ASC LIMIT $offset, 20
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      hi...ich glaub ich hab zu wenig info gegeben...;-)

      Table 1 besteht nur aus ID (Primary Key), Table, und Rubrikinfos
      Table 2 aus ID (PrimaryKey), relationID (der ID aus Table1), Text, und sonstiges...

      es geht nun darum, dass eine Volltextsuche über table1.headline und table2.text laufen soll und alle Begriffe wie z.b auto finden soll...

      nun gibt es doppelte headlines, aber mir unterschiedlicher ID. Dieses will ich vermeiden und jede Überschrift nur einmal herauslesen

      Kommentar


      • #4
        poste mal die mit phpMyAdmin exportierten tabellen strukturen und sage noch mal genau, wie du die daten brauchst und in welchem zusammenhang diese stehen.

        ich habe irgendwie grad den überblick verloren...

        parallel kannst du mal dies probieren
        Code:
        SELECT    *
        FROM      table1 T1
                    LEFT OUTER JOIN table2 T2 ON T1.ID = T2=relationID
        ist aber ohne WHERE.

        kommen die daten immer noch korrekt raus? unabhängig von der menge.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          tables

          so..hier die beiden tables...


          CREATE TABLE Table1 (
          id int(5) NOT NULL default '0',
          headline varchar(255) NOT NULL default '',
          cat1 varchar(60) NOT NULL default '',
          cat2 varchar(60) NOT NULL default '',
          cat3 varchar(60) NOT NULL default '',
          PRIMARY KEY (id),
          KEY Information Index (headline)
          ) TYPE=MyISAM

          CREATE TABLE table2 (
          id int(5) unsigned NOT NULL auto_increment,
          relationID int(5) unsigned NOT NULL default '0',
          content longtext NOT NULL,
          hits int(6) NOT NULL default '0',
          source varchar(100) NOT NULL default '',
          author varchar(100) NOT NULL default '',
          user varchar(50) NOT NULL default '',
          date datetime NOT NULL default '0000-00-00 00:00:00',
          PRIMARY KEY (id),
          KEY relationID (relationID)
          ) TYPE=MyISAM;

          Kommentar


          • #6
            und die weiteren infos, die ich angefordert hatte?

            anfordern.... wie das klingt....
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ups..

              ups...ganz vergessen ...

              ich brauche table1.headline, table1.cat1 - table1.cat3 table1.id
              gesucht werden soll aber ein begriff über table2.content und table1.headline ...bsp. %auto%...

              wenns geht ohne joins....*g*...

              Kommentar


              • #8
                ohne join wird wohl nicht sauber und performance-sparend gehen.

                das müsste passen.

                Code:
                SELECT    DISTINCT T1.headline,
                          T1.cat1,
                          T1.cat2,
                          T1.cat3,
                          T1.id
                FROM      table1 T1
                            LEFT OUTER JOIN table2 T2 ON T1.ID = T2.relationID
                WHERE     T2.content LIKE '%auto%' OR
                          T1.headline LIKE '%auto%'
                EDIT:
                tippfehler korrigiert
                Zuletzt geändert von Abraxax; 08.03.2003, 01:02.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  muss die T1 und T2 durch irgendwas ersetzten ???

                  Kommentar


                  • #10
                    nein. das sind aliase für table1 und table2.
                    bin zu faul zum tippen...
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      hey ...super ..das geht astrein....tausend dank !!!

                      wie würde der SELECT denn aussehen für auto AND (cabrio OR pkw)

                      Kommentar


                      • #12
                        halt stop...des geht doch nicht ..wenn drei headlines gleich sind, werden die dennoch alle drei ausgegeben.....

                        Kommentar


                        • #13
                          Dann lass mal das DISTINCT weg und gruppiere die Abfrage nach T1.headline.
                          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                          © Harald Schmidt

                          Kommentar


                          • #14
                            Original geschrieben von BobbyX
                            wie würde der SELECT denn aussehen für auto AND (cabrio OR pkw)
                            logischerweise die WHERE clausel erweitern !!!

                            Code:
                            WHERE     (T2.content LIKE '%auto%' OR
                                       T1.headline LIKE '%auto%')
                                      
                                      AND
                                      
                                      (T2.content LIKE '%cabrio%' OR
                                       T1.headline LIKE '%cabrio%' OR
                                       T2.content LIKE '%pkw%' OR
                                       T1.headline LIKE '%pkw%')
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              ok ..jetzt gehts...nochmal vielen dank für deine hilfe :-)

                              Kommentar

                              Lädt...
                              X