2016-07-29 5 views
0

Ich habe eine Tabelle namens tbl_PO und eine andere Tabelle namens tbl_PO_LineItems. In tbl_PO sind die relevanten Felder 'PO #' und 'Status'. Das 'Status' Feld hat ein paar Optionen, für die wir jetzt interessiert sind, ist "Geschlossen". Jede Bestellung hat viele Einzelposten, daher gibt es für die Bestellnummer in tbl_PO und die Bestellnummer in tbl_PO_LineItems eine 1: n-Beziehung. In tbl_PO_LineItems gibt es ein Feld namens "LineNum", das die Zeilennummer darstellt. Es gibt ein weiteres Feld namens "Code", das eine Kombination aus Bestellnummer und Zeilennummer ist. Ich weiß, dass dies ein kombiniertes Feld ist, aber es macht den Datenfluss im Rest der Datenbank viel einfacher.Wie Elemente aus untergeordneten Tabelle basierend auf Werten in der übergeordneten Tabelle auswählen?

In einer anderen Tabelle, nenne es tbl_table3, ich mag eine SQL-Anweisung entlang der Linien von diesem verwenden, um in der Lage:

SELECT Code FROM tbl_PO_LineItems WHERE tbl_PO.Status = 'Closed'

Das Problem ist, dass es keine direkte Verbindung von Kodex ist zu ein beliebiges Feld in tbl_PO. Ich muss die mit diesem Code verbundene Bestellnummer durchlaufen, um einen Statuswert von tbl_PO für diese Bestellnummer zu erhalten. Wie kann ich das machen? Ich lese ein wenig über den JOIN-Befehl, aber ich bin nicht damit zufrieden.

Jede Hilfe wird geschätzt.

Antwort

2

Verwenden Sie ein INNER JOIN:

SELECT t1.PO_num, t2.Code 
FROM tbl_PO t1 
INNER JOIN tbl_PO_LineItems t2 
    ON t1.PO_num = t2.PO_num 
WHERE t1.Status = 'Closed' 

Ich weiß nicht, wie verrückt ich bin über die kombinierte Spalte Code, aber mehr Informationen ohne Ich kann keine Verbesserungsvorschläge machen.

+0

Es ist einzigartig auf dem Gebiet, prüfen Es ist eine ID für jede Werbebuchung. Es ist nur so, dass wir die Benennungskonvention für die Benutzerfreundlichkeit gewählt haben, wenn Sie den Code in mehreren anderen Tabellen auswählen, damit wir wissen, was es ist, da es aus der Bestellnummer besteht. Kannst du auch erklären, was in deinem Code passiert? Nicht sicher was t1 und t2 sind. – Michael

+1

@Michael Die 't1' und' t2' sind Tabelle _aliases_. Sie können anstelle des vollständigen Tabellennamens verwendet werden, wodurch eine Abfrage lesbarer wird. –

+0

Syntax: select aliasName.columnName FROM tabellenname aliasName; – akhilsk

0

Hier sind einige Optionen für Sie mit einem Beitritt und einen ohne. Lassen Sie mich wissen, ob dies ist, was Sie fragen. (Ich dies die Spitze von meinem Kopf schrieben, aber es sollte laufen)

SELECT * --you can choose your columns here 
FROM tbl_PO AS PO, tbl_PO_LineItems AS LineItems 
WHERE PO.ID = LineItems.PONumber 
AND LineItems.Status = 'Closed 

oder mit beitreten

SELECT * 
FROM tbl_PO AS PO 
JOIN tbl_PO_LineItems AS LineItems 
ON LineItems.PONumber = PO.ID 
AND LineItems.Status = 'Closed 
Verwandte Themen