PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Abfrage (INNER JOIN)


AlexWeber
06.10.2003, 14:44:24
Hallo Leute,
Helft mir bitte wer kann.
Mein Problem sieht so aus:
Ich habe in meine Haupttabelle mehrere Verbindungen.
Abfragen kann ich die mit INNER JOIN und es funktioniert einwandfrei solange ich nur 1-n INNER JOIN Befehl in der Abfrage habe, ich brauche dagegen mehrere. Und das geht irgend wie bei mir nicht. Sagt mir mal bitte was ich falsch mache...
$sql="SELECT * FROM `immobilienart` INNER JOIN ( `kategorie` INNER JOIN `objekt` ON `kategorie`.`kategorie_id` = `objekt`.`kategorie` ) ON `immobilienart`.`immobilien_id` = `objekt`.`art`";
Bin für jeden Ratschlag dankbar,
Danke.
Grüße,
Alex...

MiH
06.10.2003, 16:54:06
SELECT * FROM immobilienart
INNER JOIN kategorie on kategorie.kid = immobilienart.kid
INNER JOIN objekt on objekt.art = immobilienart.art;

du mußt halt wissen, welche tabellen verknüpft werden sollen.
dabei solltest du beachten, das die verknüpfenden felder immer vom gleichen typ sind und in jeder tabelle gleich heißen.
das beispiel oben soll dir einfach nur zeigen wie es geht. funktionieren wird es nicht, da ich die struktur nicht kenne aber einen lösungsweg findest du so.

AlexWeber
06.10.2003, 17:02:51
Hi Danke Danke Danke für deine Hilfe,
ich weis das man auf die Feldtypen achten muss, und auf die richtungen, aber irgendwie klapte es nicht, aber jetzt habe ich ein Muster und glaube dass das klapt Danke nochmals!!!
Grüße,
Alex...

AlexWeber
06.10.2003, 17:22:19
Tut mir Leid aber es funktioniert NICHT...

Ich habe mit Access eine Abfrage die ich brauche gemacht aber jetzt muss ich die SQL in MY_SQL Code überschreiben und das gelingt mir nicht. Vielleicht kann mir jemand helfen ???????????
Abfage: SELECT haus.haus_id, haus.object_nr
FROM heizung INNER JOIN (detail INNER JOIN haus ON detail.DETAIL_ID = haus.detail) ON heizung.heizung_id = haus.heizung;

Grüße,
Alex...

MiH
07.10.2003, 09:38:33
deine abfrage ist wieder schrott.

SELECT haus.haus_id, haus.object_nr FROM heizung
inner join haus ON heizung.heizung_id = haus.heizung;
INNER JOIN detail ON detail.DETAIL_ID = haus.detail;

deine db möchte ich nicht wirklich sehen, da es sicherlich ne katastrophe ist, die dir ziehmlich bald auf die füße fällt.

AlexWeber
08.10.2003, 00:26:45
die Datenbank ist alles andere aber kein schrott.
Das kanst du sehen wenn du den link anklickst, die datai habe ich nur für dich hochgeladen "http://test.p15114068.pureserver.info/temp/AlexWeb/db_entwurf.htm" und wenndu dannach trotzdem sagst dass die Datenbank schrott ist, dann .... hmmm ... , es ist eine relationale Datenbank...
Ubrigens danke für dein vorschlag, aber ist auch nicht richtig...
Viele Grüße,
Alex...

MiH
08.10.2003, 09:10:39
ok nach dem ich mir das mal angesehen habe. muß ich dir sagen das ziehmlich viel unglücklich gewählt wurde.

char() wird bei dir sowieso zu varchar.
preis (CHAR 55)
nebenkosten (CHAR 55)
kaution (CHAR 55)
maklerprovision (FLOAT)

- warum nimmt man für zahlenwerte char() und dann doch auch mal float()?
- foto 1 - 12
es wäre hier vielleicht auch sinnvoller gewesen, das ganze in einen array zu packen. so kann man das in einer spalte ablegen. wichtig sind ja nur die bildnamen.

- partner_anrede (CHAR 25)
kann eigentlich nur 'Herr','Frau','Firma' sein.
von daher ist ENUM() schon der bessere typ.

-stellplatz (CHAR 3)
hier ist enum() genau der richtige typ.

naja das könnte man noc weiter ausführen aber da drauf hab ich keine lust. meine vermutung war somit also nicht ganz verkehrt :)