2016-05-24 13 views
-3

Ich habe ein Projekt, das mehrere Benutzer hat. Es gibt zwei Benutzertypen, die Person, die bestellt und die Person, die anbietet.MySQL/Java - Wie kann ich diese SELECT-Anweisung machen?

Wenn die PERSONEN WERDEN bestellen Bestellungen. Es wird dem BIDDERS-Konto entsprechen. Was ich möchte, ist so etwas, wenn ein BIDDER nicht für irgendwas geboten hat, erscheinen alle verfügbaren Gebote für sein Konto auf seinem Konto. Ich habe zwei Tabellen: ORDERS und BIDS

ORDERS TABLE:

OrderID|Item | OrderStatus| 
1  |Shoes | On-Bidding | 
2  |Bag  | On-Bidding | 
3  |Shirt | On-Bidding | 

BIDS TABLE:

BidID | BidCost | BidStatus |BidderID | OrderID | 
1  | $100 | Waiting | 2  | 2  | 
2  | $200 | Waiting | 1  | 2  | 

Die Tabelle, die ich will, ist, wie dies mit JAVA anzuzeigen:

Die Tabelle VERFÜGBAR FÜR BID, die dem Benutzer angezeigt wird:

Für Bieter ID 2 (He für die Tasche gebietet, so wird die BidCost Säule verbunden werden):

Order ID| Item | BidCost | 
2  | Bag | $100 | 
1  | Shoes | NULL | 
3  | Shirt | NULL | 

Für Bieter ID 1 (Er hat auch Gebote für die schlecht für $ 200)

Order ID| Item | BidCost | 
2  | Bag | $200 | 
1  | Shoes | NULL | 
3  | Shirt | NULL | 

für Bieter ID 3 (Er hat nichts Bid)

Order ID| Item | BidCost | 
2  | Bag | NULL | 
1  | Shoes | NULL | 
3  | Shirt | NULL | 

Was habe ich nur alle SELECT mit dem ON-BIDDING Status und JOIN mit der BID-Tabelle für die BidCoS t. Aber jedes Mal, wenn ich das tue. Wenn jemand bereits für einen Artikel geboten hat und ein anderer Nutzer dies nicht getan hat, erscheinen ihm die Gebotskosten nicht als null. Das Gebot des anderen Benutzers wird verknüpft. So wird dem Benutzer das Gebot eines anderen Benutzers angezeigt.

Wie kann ich dies mit MySQL und JAVA tun?

Mein QUERY:

SELECT * 
FROM orders T1 
INNER JOIN 
    SELECT bidcost 
    FROM bids T2 
ON T1.ID=T2.ID 
WHERE orderstatus=ON-BIDDING 
+0

Können Sie mir bitte erklären, was Sie archivieren möchten. Ich kann es nicht durch Ihre Erklärung bekommen – ZeusNet

+0

Bitte seien Sie spezifisch, sagen Sie, was Sie erreichen möchten? Wenn Sie möchten, dass Nullwerte im Resultset erscheinen, verwenden Sie einfach OUTER JOIN. –

+0

@ZeusNet Was ich will ist, wenn die Bieter nicht für irgendwas bieten Ich möchte, dass sie alle ON-BIDDING Bestellungen zeigen, aber die Bidkosten werden nur NULL sein. Und wenn er etwas anbietet, wird die Gebotsabgabe jetzt aber nur für den spezifischen BIDDER angezeigt. – Lester

Antwort

0
SELECT * FROM orders t1 
     LEFT JOIN bids t2 on t1.OrderID = t2.OrderID and t2.BidderID = $user_id 
    WHERE orderstatus=ON-BIDDING 
+0

Sie haben gerade mein Problem gelöst. Du bist ein reines Genie. Ich weiß nicht, warum einige Leute meine Frage verneinten, ich weiß, dass es klar ist. Vielen Dank. Du weißt nicht, wie viel Hilfe du gegeben hast. – Lester

Verwandte Themen