Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL] Join lukt niet*

Pagina: 1
Acties:

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Ik ben bezig met een intern order systeem op te zetten maar ik loop tegen een klein probleem aan dat 1 van mijn mysql queriers niet loopt zoals ik het wil ...

Ik heb tabel met al mijn artikel data met als naam (Shop_List) Velden ID,Desc,Amount.
Deze tabel bevat alle artikel info
Ik heb een 2de tabel waar alle orders in opgeslagen worden (Shop_Order) Velden ID,SL_ID,CLIENT,Qty,Date,Processed (SL_ID verwijst naar het ID veld van de Shop_List tabel)

Initeel maakt de klant een order en die gaat in de Shop_Order tabel, 1 keer per week loopt er een script dat de orders gaat exporteren naar een excel bestand zodat ze afgehandeld kunnen worden wanneer dat gebeurt krijgt de processed status 1 anders heeft die status 0
Dit wil zeggen dat zolang er geen processing heeft plaats gevonden de klant zijn order moet kunnen aanpassen.

Wat heb ik gedaan?
Ik heb een funtie die gaat checken of er al orders zijn gemaakt die niet processed zijn voor die klant. Indien niet gaat hij naar functie new_orders
Indien wel dan gaat hij naar functie modify Order

In die modify order functie wil ik de volledige artikellijst van Shop_List op het scherm toveren met een extra veld Qty dat vanuit de Shop_Order komt. En hier loop ik dus op vast.

SELECT L.ID, L.Description, L.Amount_NL, O.Qty
FROM Shop_List AS L
LEFT JOIN Shop_Orders AS O ON L.ID = O.SL_ID

geeft een output maar op het moment dat ik aan deze query nog wat voorwaarde wil plakken krijg ik maar een beperkt aantal lijnen terug ipv de volledige lijst met het Qty veld ingevuld voor die klant bij dat artikel....

Het zal wel een domme zijn maar ik heb me al zot aan het googelen geweest :-(

Because Great minds Think alike


  • 418O2
  • Registratie: November 2001
  • Laatst online: 14:15
Gebruik je wel de goede join? Hij joined de orders nu alleen op de list als er een order is voor die list

  • elmer25
  • Registratie: Februari 2002
  • Laatst online: 01-12-2021

elmer25

ooit was ik 25

Extra voorwaarden kun je zo toevoegen:

SELECT L.ID, L.Description, L.Amount_NL, O.Qty
FROM Shop_List AS L
LEFT JOIN Shop_Orders AS O ON L.ID = O.SL_ID
WHERE Qty>0 AND Field=Value etc

  • sjunnie
  • Registratie: September 2001
  • Laatst online: 18-11 17:45

sjunnie

U mag ook Sjun zeggen

Ten eerste vind ik dit geen [PHP] zoals in de topictitel, maar meer [MySQL].
Ten tweede gebruik je in de beschrijving van de tabellen andere kolomnamen dan in de query.
Ten derde heb ik je vraag 3x moeten lezen om hem enigszins te begrijpen, een beetje meer aandacht aan je OP zou niet verkeerd zijn.

Tot slot gebruik je een Left join; je gaat dus alle artikelen uit de eerste tabel (Shop_List) ophalen ipv alle orders uit de tweede tabel (Shop_order)

http://www.w3schools.com/Sql/sql_join.asp

If you can judge a wise man by the color of his skin then mister you're a better man than I


  • Big Womly
  • Registratie: Oktober 2007
  • Laatst online: 01-09 13:39

Big Womly

Live forever, or die trying

Geef eens een voorbeeld van die voorwaarden en je recordsets met en zonder de voorwaarden met je verwachtingen.
Ligt waarschijnlijk aan mij, maar ik kan niet goed volgen met de huidige beschrijving van je probleem... :s

When you talk to God it's called prayer, but when God talks to you it's called schizophrenia


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

in shop_order dien je ook Amount op te nemen omdat het bedrag van het artikel kan wijzigen. Echter het bedrag op de factuur (pakbon) mag natuurlijk niet wijzigen.

Wat betreft je vraag. Je kunt geen aantal (qty) bij de (shop_)list tonen. List heeft namelijk een 1:n relatie met (shop_)order. Je zult in dat geval altijd een aggregate functie (sum, count, avg, etc) moeten gebruiken, maar je kunt nooit het aantal wijzigen.

Je kunt de lijst wel andersom tonen. Je toont alle order regels en koppelt daarna de lijst informatie ( shop_order (left) join shop_list ). Defineer eerst eens goed wat je precies uit de database wilt ophalen. Je wilt namelijk niet de artikellijst, maar de bestelde artikelen ophalen zodat de klant de aantallen nog kan wijzigen. Dat lijkt hetzelfde, maar is het zeker niet.

If it isn't broken, fix it until it is..

Pagina: 1