allg. frage zu selects und resourcen

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

  • allg. frage zu selects und resourcen

    frage was ist besser? angenommen ich hab 4 keywörter (die alle unterschiedlich sind und keine ähnlichkeiten haben ) nach den ich suchen will.
    -> ein select ala: where keyword = word1 OR keyword = word2 ... usw..
    oder
    -> eine schleife mit 4 runden ala: where keyword = word[$i];

    was ist besser und resourcenschonender (hab mich das schon immer gefragt

    was meint ihr

  • #2
    Code:
    WHERE keyword in_array() ...
    solch ein konstrukt gibts afaik auch noch ....
    EDIT:
    scheint nur IN zu sein
    Zuletzt geändert von derHund; 30.12.2003, 19:57.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      ... ah ja, wußt ich gar nicht das ich das auch in queries setzen kann -> ich glaub sogar das ist das beste und resourcen schonenste weil man ja nicht immer eine neue query setzen muß oder?

      Kommentar


      • #4
        ich hab das mal versucht mit in

        Code:
        ("SELECT key_id FROM keywords_de WHERE keyword IN ('keyword1','keyword2')")
        wenn ich das ergebnis mit fetch_array abhole kriege ich immer nur eine key_id zurück wobei es ja zwei sein müßen .... hä?

        Kommentar


        • #5
          du selectierst alle ids, deren keyword gleich kw1 oder kw2 ist ... muß ja nicht zwangsläufig mehr als ein ergebnis rauskommen ...
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            ??? ich muß vorher nochmal gestehen das ich es mit mysql nicht so habe;(

            also ich hab in der tabelle keywords_de die einträge

            id5 = keyword1
            id8 = keyword2

            jez müßte ich doch auch logischer weise 8 und 5 als key_id zurückbekommen oder steh ich hier voll aufm schlauch?

            es lag an der fehlenden while schleife - > danke
            Zuletzt geändert von frank7l7; 30.12.2003, 21:16.

            Kommentar


            • #7
              Original geschrieben von frank7l7
              es lag an der fehlenden while schleife - > danke


              aber bitte das nächste mal bei editieren auch den edit-tag verwenden.
              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


              • #8
                oki

                Kommentar


                • #9
                  suchen (und finden über drei tabellen

                  guten abend geliebtes forum,

                  ich frag um rat und weiteres vorgehen

                  ich hab drei tabellen (news1,news2,news3) in der form: (all sind von der struktur fast identisch das wichtigste feld news_id auch!)

                  Code:
                  CREATE TABLE news1_de (
                    news_id mediumint(8) unsigned NOT NULL auto_increment,
                    titel varchar(60) NOT NULL default '',
                    content1 varchar(200) NOT NULL default '',
                    ext_link varchar(100) default NULL,
                    int_link varchar(100) default NULL,
                    content2 mediumtext,
                    datum datetime NOT NULL default '0000-00-00 00:00:00',
                    ini char(3) NOT NULL default '',
                    ticket int(8) unsigned NOT NULL default '0',
                    PRIMARY KEY  (news_id)
                  ) TYPE=MyISAM;
                  dann hab ich genau eine tabelle in der keywörter gesammelt werden

                  Code:
                  CREATE TABLE keywords_de (
                    key_id int(10) unsigned NOT NULL auto_increment,
                    keyword varchar(25) NOT NULL default '',
                    hits int(10) unsigned NOT NULL default '0',
                    hits_kunden mediumint(8) unsigned NOT NULL default '0',
                    hits_gast mediumint(8) unsigned NOT NULL default '0',
                    last_hit datetime NOT NULL default '0000-00-00 00:00:00',
                    PRIMARY KEY  (key_id),
                    UNIQUE KEY keyword (keyword)
                  ) TYPE=MyISAM;
                  als letztes kommen noch drei tabellen (matches1,matches2,matches3) die die matches (welches keyword in welcher news tabelle vorkommt) zwischen den obigen tabellen darstellt


                  Code:
                  CREATE TABLE matches1_de (
                    news_id int(10) unsigned NOT NULL default '0',
                    key_id int(10) unsigned NOT NULL default '0',
                    KEY match (key_id,news_id)
                  ) TYPE=MyISAM;
                  so, nun soll gesucht werden -> als ausgang hab ich eine array in die key_ids der gefundenen suchwörter stecken. jetzt aber wie mache ich weiter da mein sql können ehr zaghaft ist

                  irgendwie muß ich jetzt die news_id aus allen matches tabellen kriegen um dann in den newstabellen nach diesen news_ids zu suchen! ufff gut drei tabellen und wie gehts weiter? wer hilft mir auf die sprünge?

                  danke freu mich auf antworten

                  Kommentar


                  • #10
                    wer hilft mir auf die sprünge?
                    Code:
                    SELECT
                        .....
                    FROM
                        news N
                            INNER JOIN match_de MDE ....
                                INNER JOINS keywords K  ....
                    WHERE
                        K.keyid IN ('key1', 'key2', 'key4')
                    hattest du nich eben schon was zu IN gehabt?
                    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
                      Original geschrieben von Abraxax
                      hattest du nich eben schon was zu IN gehabt?
                      hattest du auch.

                      *ZUSAMMENFÜHR* da gleiches thema.


                      warum suchst du eigetnlich erst die ids raus? du kansnt doch direkt mit den keywords suchen.
                      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


                      • #12
                        du meinst sowas wie diese join über alle 7 tabellen ? wow das wäre natürlich der hammer
                        ist das in deinem beispiel auf der ersten seite beinhaltet? ich bin ja schon mal froh das die struktur für das schnelle resourcen schonende suchen ansscheinend ok ist

                        Kommentar


                        • #13
                          Original geschrieben von frank7l7
                          [...] über alle 7 tabellen ? [...]
                          haben deine tabellen kinder bekommen?

                          Original geschrieben von frank7l7
                          [...] ich hab drei tabellen [...]
                          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


                          • #14
                            haben deine tabellen kinder bekommen?
                            hihi, ... nein nein könn das tabellen auch? vielleicht habe ich mich etwas ungeschickt ausgedrückt

                            ich hab ja:

                            3 news tabellen
                            3 matches tabellen
                            1 keyword tabelle

                            macht 7

                            aber wenn du dein sql statement noch mal etwas genauer darlegst wirds vielleicht helle

                            Code:
                            SELECT
                                bla, bla, bla
                            FROM
                                news1, news2, news3
                                INNER JOIN match_de MDE .... ?? // versteh ich nicht ganz
                                INNER JOINS keywords K  .... ?? // ebenfalls
                            WHERE
                                keywords_de.keyid IN ('key1', 'key2', 'key4')

                            Kommentar


                            • #15
                              ich habe das wohl eben mit den 3 tabs falsch verstanden.
                              warum hast du drei tabellen, wenn der inhalt identisch von der struktur ist?

                              warum fummelst du einfach so krank in der query rum?

                              warum liest du nicht hier mal kurz nach.
                              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

                              Lädt...
                              X