Seite 1 von 1
SQL Über zwei Tabellen, wobei die eine nicht gefüllt ist
Verfasst: 21.05.2008, 01:20
von pvdb
Hi,
sagen wir ich habe die Tabelle warhouse:
warhouse_id
warhouse_name
und die Tabelle product_to_warhouse:
product_id
quantity
warhouse_id
In meinem Script will ich nun alle Lagerplätze anzeigen:
select * from warhouse
Nun Frage ich mich, ob ich in einem SQL auch mit anzeigen kann, ob der Lagerplatz belegt ist
select * from warhouse w, product_to_warhouse p2w where w.warhouse_id = p2w.warhouse_id
würde ja nicht gehen, weil er dann nur Lagerplätze anzeigen würde, die gefüllt sind, aber nicht die Leeren.
Ist das irgendwie mit einem Join möglich abzufragen? Wenn ja interessiere ich mich für ein Beispiel
Phil
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 21.05.2008, 01:28
von Zerstreuter
SELECT * FROM warhouse AS w
LEFT JOIN product_to_warhouse AS p2w USING (warhouse_id)
Verfasst: 21.05.2008, 01:30
von gelegenheitsbot
join ist nur ne hierarische verknüpfungs-optimierungs-funktion (hinsichtlich Indizees).......
Mit SQL ist prinzipiell inzwischen alles möglich!
Leider zeigst du hier keine logischen zusammenhänge, so dass dir hier auch keiner ne Lösung geben kann. Schick mir mal ne pm - ich kann dir da auf jeden Fall helfen! Aber deine Logik-Verknüpfungen, Standardwerte und Struktur sind hier nicht eindeutig erkennbar.
Verfasst: 21.05.2008, 11:01
von Southmedia
gelegenheitsbot, ist doch alles vorhanden was man braucht:
1. Wir haben ne Tabelle in der die Lagerplätze stehen,
2. eine Beziehungstabelle die angibt in welchem Lagerplatz wieviele Einheiten von einem Produkt lagern,
3. und (nicht angegeben, aber offensichtlich) eine Tabelle mit Produkten.
Also gehen wir, wie Zerstreuter korrekt gesagt hat, hin und holen uns alle Lagerplätze, joinen das ganze mit der Beziehungstabelle um zu sehen wo Produkte liegen und wo nicht. Bei Lagerplätzen (warehouse_id) die nicht belegt sind ist product_id dann NULL, wonach ja auch gefiltert werden kann (WHERE product_id IS NULL, wenn nur leere Lagerplätze angezeigt werden sollen oder WHERE product_id IS NOT NULL, wenn nur belegte Lagerplätze angezeigt werden sollen) .
Zusätzlich würde ich, wenn die Information _welche_ Produkte jeweils eingelagert sind nicht so wichtig ist, noch nach der warehouse_id gruppieren, damit Lagerplätze in denen 1000 Produkte lagern (Davon gehe ich mal aus dass das möglich ist, sonst wäre das DB-Schema leicht 'falsch'...) nicht 1000-fach angezeigt werden, sondern nur einmal auftauchen. Dadurch verliert product_id natürlich einen Teil seiner Aussagekraft, aber das wird ja in Kauf genommen da nicht notwendige Information.
- Jan
Verfasst: 22.05.2008, 11:44
von pvdb
So,
vielen Dank für die Antworten, ein LEFT JOIN, war genau das was ich gesucht habe. Damit funktioniert es nun auch.