Rückwertssuche INNER JOIN

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

  • Rückwertssuche INNER JOIN

    ich habe folgende Datenbankabfrage für eine Suchfunktion:

    $query = "SELECT unternehmen_branchen.branchename AS text, unternehmen_basis.name AS title, unternehmen_basis.strasse, unternehmen_basis.plz, unternehmen_basis.ort, "
    ."CONCAT( 'index.php?option=com_unternehmen&Itemid=40&Action=SHOW&ID=', unternehmen_basis.id ) AS href, "
    ."'2' AS browsernav "
    ."FROM unternehmen_basis "
    ."INNER JOIN unternehmen_branchen ON unternehmen_basis.branche_id1 = unternehmen_branchen.ident "
    ."WHERE unternehmen_basis.name LIKE '%$text%' "
    ."ORDER BY unternehmen_basis.name";


    es gibt 2 Tabellen
    unternehmen_branchen --> Hier sind die Branchen mit einer Branchen.ident

    und unternehmen_basis --> Hier sind die Daten und einer branche_id1
    (Branchen.ident <--> Branchen_id1 ZUORDNUNG)

    in $text ist der Suchstring

    über die BranchenID wird der Branchenname ermittelt
    Das Funktioniert auch soweit.

    Jetzt mein Problem ich möchte in der gleichen Datenbankabfrage zusätzlich auch über den Branchennamen suchen der in der Tabelle unternehmen_branchen ist dort Branchen.ident mit INNER JOIN zur branche_id1 und alle Ergebnisse die dieser Branche zugeodnet sind anzeigen.

    verzwickt ich weiss, ich hätte die Probleme nicht wenn der Branchenname in der tabelle unternehmen_basis hätte

    Danke ich hoffe ihr versteht mein Problem
    (suche über 2 tabellen mit überkreuzter inner join beziehung)

    Vincent
    Zuletzt geändert von Vincent2004; 14.07.2006, 19:21.

  • #2
    diesen thread kennst du schon?
    http://www.php-resource.de/forum/sho...threadid=28292

    ansonsten verstehe ich deine frage nicht so wirklich was du eigentlich willst. evtl wäre ein dump von tabellen und eine formatierte query dazu auch nicht schlecht.
    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


    • #3
      ja kenne ich und grübele gerade

      Ich habe 2 Tabelledn

      Tabelle1:
      ID
      Name
      straße
      Branche_ID


      Tabelle2:
      ID
      Branche_ID
      Branche_Name


      ich habe einen suchstring "Bank"
      Ich möchte folgendes Felder Ausgelesen haben
      Name
      Branche
      Straße

      Dabei sollen alle Daten aus Tabelle 1 die den Suchstring enthalten gefunden werden (in Name oder in Straße) UND alle Daten die einer Branchen_ID zugeordnet sind die den Suchstring enthält.

      Bsp
      Tabelle1:
      (ID, Name, straße, Branche_ID)
      1, Müller, straße 1, 33
      2, Mayer Bank, gehweg, 44
      3, Sparkasse, Hauptstraße, 44
      4, rubanko, rudisweg ,54

      Tabelle2:
      (ID, Branche_ID, Branche_Name)
      1, 32, Restaurants
      2, 33, Einzelhandel
      3, 44, Bank
      4, 54, entsorgung


      Wenn ich nach Bank suche soll ich folgendes Ergebnis bekommen:
      Mayer Bank, Bank, gehweg
      rubanko, Entsorgung, rudisweg
      ABER AUCH (hier ist das Problem für mich ..)
      Sparkasse, Bank, Hauptstraße (Wegen der ID 44 = Bank)

      ich hoffe mein Problem ist deutlich geworden

      Danke
      iVincent

      Kommentar


      • #4
        Meinst du zufällig sowas:
        PHP-Code:
        SELECT tabelle1.*, tabelle2.* FROM tabelle1 LEFT JOIN tabelle2 using (branche_id)
        WHERE tabelle1.name LIKE('%bank%') or tabelle1.straße LIKE('%bank%'
        or 
        tabelle2.branche_name LIKE('%bank'
        ?
        ich glaube

        Kommentar


        • #5
          GENAU warum denke ich so kopliziert ?
          DANKE
          TOP

          Frage warum ein LEFT JOIN und kein INNER JOIN ?

          Kommentar


          • #6
            Frage warum ein LEFT JOIN und kein INNER JOIN ?
            Ähm, nur so, um genau zu sein, wäre ein INNER JOIN tatsächlich richtiger gewesen - der LEFT JOIN würde noch alle Sachen aus Tabelle1 mit auflisten, die in Tabelle 2 mit ihrer branche_id gar nicht vorkommen. In deinem Beispiel ist das aber egal, da alle Einträge ihre Entsprechung in Tabelle 2 haben.

            Also nimm lieber deinen INNER JOIN, der findet dann nur alle Einträge, die in beiden Tabellen stehen.

            Gruß,
            ministry
            ich glaube

            Kommentar

            Lädt...
            X