SQL-Anweisung
piet
- datenbank
Hallo,
ich brauche eine, für mich komplizierte, SQL-Abfrage.
Ich habe einen Tabelle mit Lieferanten. Mit ID, Name, usw)
Ich habe eine Tabelle mit Artikeln. Mit ID, Name...., LieferantenID usw.)
Ich schreibe nun eine Openoffice Seite mit der ich unter den Lieferanten blättern kann. so weit so gut, funktioniert es.
Wenn ich nun LieferantenX anwähle sollen nur alle Artikel des Lieferantn angezeigt werden. Somit verhindere ich das ein Artikel vom falschen Lieferanten bestellt wird.
Ich muss also aus der Tabelle der Lieferanten die id nehmen und in der Tabelle Artikel nur alle Artikel auswählen die die Lieferanten id x.y haben. Diese will ich dann in einem Combofeld anzeigen.
Wie lautet nun die SQL-Anweisung
Soweit bin ich..
SELECT Art.*, Lief.* FROM ARTIKEL AS A, LIEFERANTEN AS Lief ..... WHERE Art.LIEFERANTENID = ????
Der Lieferantenname steht in einem Feld und ich starte die SQL-Anweisung mit Button, das ist klar. Ich benötige nur die SQL-Anweisung
Gruß
piet
Hello,
SELECT Art.*, Lief.* FROM ARTIKEL AS A, LIEFERANTEN AS Lief ..... WHERE Art.LIEFERANTENID = ????
lies dir am Besten mal die entsprechenden Artikel zu Joins im SELFHTML-Datenbankbereich durch, das müsste eine Menge deiner Fragen beantworten.
Der Lieferantenname steht in einem Feld und ich starte die SQL-Anweisung mit Button, das ist klar. Ich benötige nur die SQL-Anweisung
wenn du doch den Namen hast, bzw. wenn du das Feld befüllen konntest, hast du dann nicht zufällig schon die ID des Lieferanten? Wenn ja, dann brauchst du doch gar keinen Zugriff mehr auf die Lieferantentabelle, es reicht ein simples SELECT ... FROM artikel WHERE lieferantenid = <id>
MfG
Rouven
Hi,
SELECT Art.*, Lief.* FROM ARTIKEL AS A, LIEFERANTEN AS Lief ..... WHERE Art.LIEFERANTENID = ????
mehrere Dinge:
1.) Selektiere *niemals* pauschal alle Spalten einer Tabelle. Das "*" mag vorkommen, wenn Du mal kurz zum Ausprobieren ein Statement in eine Konsole tippst; aber spätestens wenn Du dieses Statement irgendwohin übernimmst, ersetze das "*" durch die Spaltenliste.
2.) Schreibe per Konvention alle Elemente der Sprache SQL in Großbuchstaben, alle strukturellen Daten in Kleinbuchstaben, alle Inhalte case-sensitive. Die richtige Schreibweise wäre also "SELECT art.spaltenname, ... FROM artikel AS a, lieferanten AS lief ... WHERE art.lieferantenid = ...".
3.) Entweder hast Du die Lieferanten-ID aus Deinem Combofeld bereits erhalten, dann füge sie hier unter Beachtung aller Sicherheitsbestimmungen ein. Oder Du erhältst den Namen, dann vergleichst Du diesen mit der Spalte, in der der Name steht. Zu Joins vergleiche Rouvens Antwort.
Cheatah