compuboy: LEFT JOINs mal wieder

Guten Tag,

Ich habe folgende Tabellen:
"links_company":

id, street, building, postal_code, city, category, country, name, plz, url, email, banner

"links_mags":

index_links, city, country, category, lang, name, postal_code, url, banner

"links_search"

index_links, gebiet, sprache, name, url

"links_uni"
id, stadt, name, plz , url, banner

Nun sollen mehrere Tabellen gleichzeitig abgefagt werden. Es soll im Feld "name" nach dem Suchbegriff gesucht werden.

Folgendes funktioniert nicht:

SELECT
      *
FROM
    links_company

LEFT JOIN links_search ON (links_search.name = '".$searchterm."')
LEFT JOIN links_uni ON (links_uni.name = '".$searchterm."')
LEFT JOIN links_mags ON (links_mags.name = '".$searchterm."')
WHERE
     (links_company.name = '".$searchterm."')
SORT BY links.company ASC;

Warum nur nicht?

Danke

  1. yo,

    Folgendes funktioniert nicht:

    geht auch nicht, weil der logische sinn "murx" ist, den du da baust. so wie ich das sehe, sind das alles mehr oder weniger unabhänige tabellen, die man nicht so einfach miteinander joinen kann. ich glaube, was du suchst ist eine UNION (addition) der unterschiedlichen abfragen aus mehreren tabellen. dabei ist zu beachten, dass alle tabellen die gleiche anzahl von auszugebenen spalten haben müssen.

    Ilja

    1. Hallo,

      geht auch nicht, weil der logische sinn "murx" ist, den du da baust.

      Also mir wurde empfohlen den JOIN zu benutzen.

      »»so wie ich das sehe, sind das alles mehr oder weniger unabhänige

      tabellen, die man nicht so einfach miteinander joinen kann.

      Ja, die haben alle verschiedene Attribute.

      »»dabei ist zu beachten, dass alle tabellen die gleiche anzahl von auszugebenen spalten haben müssen.

      Na haben wir das Schlamassel. Die Tabellen haben icht die gleiche Anzahl von Spalten.

      Also was bleibt übrig?

      Danke

      1. yo,

        Also mir wurde empfohlen den JOIN zu benutzen.

        viele sagen vieles, du musst dir das raussuchen, was für dich passt. Joins zu verwenden ist für diesen fall in meinen augen nicht richtig.

        Ja, die haben alle verschiedene Attribute.

        verschiedene attribute bedeutet nicht abhängigkeit oder unabhängigkeit. das hat nichts miteinander zu tun. die abhängigkeiten von tabellen wird über fremdschlüssel hergestellt. da es keine bei dir gibt, brauchst du auch keinen join.

        Na haben wir das Schlamassel. Die Tabellen haben icht die gleiche Anzahl von Spalten.

        nein, ist kein schlamassel. die tabellen brauchen nicht die gleichen anzahl von spalten, sondern bei der ausgabe muss die anzahl der spalten übereinstimmen, sprich die spalten zwischen dem SELECT und der FROM Klausel müssen die gleiche anzahl haben.

        Ilja

  2. Hallo

    du brauchst erstmal Fremdschlüssel, mit denen du die Tabellen miteinander verknüpfst. Sonst funktioniert der JOIN auf keinen Fall.

    Grüße Sascha

    1. Hallo,

      du brauchst erstmal Fremdschlüssel, mit denen du die Tabellen miteinander verknüpfst. Sonst funktioniert der JOIN auf keinen Fall.

      Fremdschlüssel geht doch nicht.
      Ich sagte doch schon, dass die Tabellen nicht in Beziehnug stehen.

      Es muss doch irgendwie möglich sein ein paar Tabellen nach bestimmten Wörtern in einer Spalte zu durchsuchen.

      Oder braucht man dafür wirklich mehrere SELECT Anweisungen ?

      Danke