Probleme mit Abfrage (JOIN)

lutz_miller

Grünschnabel
Hallo,

habe ein großes Problem mit einer SQL-Abfrage, vllt kann mir wer helfen.

Ich habe zwei Tabellen:

Tabelle Artikel
- Artikelnummer
- Bezeichnung
- Preis
- Beschreibung
- Kategorienummer

Tabelle Versandkosten
- Versandnummer
- Kategorienummer
- Betrag

Der Benutzer wählt über ein DropDown-Feld die jeweilige Artikelkategorie aus und es sollen ihm alle Artikel in dieser kategorie und die versandkosten angezeigt werden. Die Artikelabfrage funktioniert soweit meine Frage ist nur, wie kann ich in die Abfrage einen JOIN einbauen damit er immer die zur kategorie passenden Versandkosten anzeigt?

mfg
 
Hi lutz_miler,

klingt für mich nach einem simplen Left Outer Join. Ich gehe davon aus, das Du als DBMS MySQL benutzt (sollte man immer dazu schreiben)?

Versuche Dich mal ein wenig mit dem Thema Joins zu beschäftigen, letztlich ist es eine sehr einfaches Sache, wenn man da etwas Übung hat.

Hier aber mal Deine Abfrage, quasi als Starthilfe:

Code:
SELECT *
FROM Artikel art
LEFT JOIN Versandkosten vkost ON art.Kategorienummer = vkost.Kategorienummer
 
Hallo,

müsste in die Abfrage noch eine Klausel einbauen dass nur Kategorienummern gesucht werden, welche der Variablen $nummer entsprechen. Dies funktioniert aber leider nicht, weder mit where noch mit $nummer=art.Kategorienummer=kat.Kategorienummer.

Kann mir dabei noch jemand helfen, wäre dringend. mfg
 
Hä?
Was hast du versucht?
SQL:
WHERE
oder
SQL:
$nummer=art.Kategorienummer=kat.Kategorienummer

Das ist beides kein kompletes SQL. Zeig mir doch mal wie deine Versuche genau ausgesehen haben.

Ich glaube was du willst ist
SQL:
SELECT *
FROM Artikel art
LEFT JOIN Versandkosten vkost ON art.Kategorienummer = vkost.Kategorienummer
WHERE art.Kategorienummer = $nummer
Bitte in Zukunft Codes posten, dann können wir sehen was du wirklich schon versucht hast
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

musste noch eine kleine Änderung vornehmen an der Tabellenstruktur und bin mir nun nicht mehr sicher ob meine Abfrage so funktionieren kann:

Tabellen:

TABLE Artikel
Artikelnummer
Herstellernummer
Bezeichnung
Preis
Vorrat
Beschreibung
Kategorienummer
Versandkostenschluessel

TABLE Versandkosten
Versandkosteschluessel
Bezeichnung
Versandkosten


Ich will nun die Abfrage so gestalten, dass der Benutzer die Kategorienummer auswählt, anhand dieser aus der Tabelle Artikel alle Artikel dieser Kategorie ausgewählt werden und dann anhand des Versandkostenschlüssels die Versandkosten aus der Tabelle Versandkosten hinzugenommen werden. Dies muss doch auch wieder mit einem JOIN Funktionieren, jedoch glaub ich habe ich in meiner Abfrage nen Denkfehler drin, wäre super wenn mir wer helfen könnte.

Code:
select * from Artikel art left join Versandkosten vkost on art.versandkostenschluessel = vkost.versandkostenschluessel where art.katnr=$nummer
 
Sollte eigentlich stimmen.
Du solltest aber noch Felderaliase einfügen. "Bezeichnung" hast du sonst nachher doppelt, ebenso den "Versankostenschlüssel".

SQL:
SELECT 
	art.* ,
	vkost.Bezeichnung AS vkost_bezeichnung,
	vkost.Versandkosten
FROM 
	Artikel art 
	LEFT JOIN Versandkosten vkost 
		ON art.versandkostenschluessel = vkost.versandkostenschluessel 
WHERE 
	art.katnr=$nummer

PS: Wenn du dein SQL sauber formatierst, mit Tabulatoren und neuen Zeilen, ist er viel einfacher lesbar
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

meine Datenbank läuft so weit nur habe ich noch zwei kleine Fragen um Schönheitsfehler auszubügeln:

1. Welchen Datentyp nehme ich am besten für eine Telefonnummer (mir wird immer die führende 0 gelöscht), habe integer, text und varchar probiert, funktioniert aber nicht.

2. Beim Auslesen eines Ansprechpartners, z.b. Frau Müller, über PHP, schreibt er mir als Ausgabewert in ein Textfeld nur Frau, er schneidet praktisch nach dem Leerzeichen ab, hat da jemand nen Tipp für mich, was ich da ändern kann.

So sieht die Ausgabe aus, wenn ich es normal als Text ausgebe funktioniert es, nur nicht so.

echo "<tr><td>Telefon:</td><td><input type=text value=$zeile[Telefon] readonly></input></td></tr>";
 
Hallo,

habe momentan Probleme mit meiner E-Mail-Adresse.

Kann mir trotzdem einer helfen bei meinem Problem?

mfg
 
Hallo,

hab es jetzt wieder geschafft meinen alten Mail-Account zu reaktivieren, sorry dass ich mit anderen Benutzern geantwortet habe.

Mein Problem besteht leider immer noch.

Komisch ist für mich folgendes, wenn ich die Ergebnisse in ner Tabelle ausgebe dann wird mir alles komplett angezeigt, gebe ich es aber in einem Textfeld, (input type=text) aus schneidet er mir alles nach dem Leerzeichen ab.

Wäre echt super, wenn mir jemand helfen könnte, ist dringend.

Hier der Quelltext:

PHP:
echo "<tr><td><b>Bestellungsnummer:</b></td><td><input type=text value=$werte[Bestellungsdatum] readonly></input></td></tr>";

Hier wird die Ausgabe gemacht, jedoch leider nicht komplett, bitte um Hilfe.

mfg
lutz_miller
 
Zurück