Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


UPDATE med INNER JOINS

Postades av 2006-05-03 00:49:32 - Magnus Öberg, i forum access, Tråden har 7 Kommentarer och lästs av 863 personer

Jag försöker köra UPDATE på en tabell i Access men det går inte så bra (som ni förstår är jag rätt ny på sånt här). Jag hittade följande på nätet

MS Access does support multi table updates but syntax is slightly different e.g. UPDATE customers INNER JOIN orders ON customers.customer_id = orders.customer_id SET customers.rating = 'Good'

Jag har försökt följa detta men får ändå inte till det

Detta funkar
UPDATE Medlemmar INNER JOIN Lag ON Medlemmar.LagID = Lag.LagID SET Medlemmar.LagID=15 WHERE Medlemmar.MedlemsID=1421

och detta funkar
SELECT LagID from Lag WHERE Lag.Lag='P98' (ger 15)

Varför funkar då inte detta
UPDATE Medlemmar INNER JOIN Lag ON Medlemmar.LagID = Lag.LagID SET Medlemmar.LagID=(SELECT LagID from Lag WHERE Lag.Lag='P98') WHERE Medlemmar.MedlemsID=1421

Tabellerna är alltså

Medlemmar Lag

MedlemsID LagID
LagID Lag
Namn
Adress
osv

Tackar på förhand


Svara

Sv: UPDATE med INNER JOINS

Postades av 2006-05-03 07:57:17 - Jenny Månsson

Prova att lägga till en top 1 i subfrågan
=(SELECT TOP 1 LagID from Lag WHERE Lag.Lag='P98')

Hade du nämligen fått flera LagID tillbaka i denna frågan hade sqlen klagat och jag tror även att den klagar när det finns en risk att få tillbaka mer än ett resultat...


Svara

Sv: UPDATE med INNER JOINS

Postades av 2006-05-03 07:59:41 - Johan Djupmarker

Varför joinar du in Lag när du inte använder den?

Testa såhär:
UPDATE Medlemmar SET Medlemmar.LagID=(SELECT LagID from Lag WHERE Lag.Lag='P98') WHERE Medlemmar.MedlemsID=1421

Jag har dock för mig att jag själv aldrig har lyckats med subselect i en UPDATE. Därför kanske du får göra 2 olika frågor, den första där du hämtar rätt LagID och den andra där du uppdaterar databasen.

/Johan


Svara

Sv:UPDATE med INNER JOINS

Postades av 2006-05-03 08:46:15 - Magnus Öberg

Tack så mycket för svaren. Jag behöver ingen TOP 1 för värdet i Lag.Lag kan bara ha ett LagID. Johans förslag var det jag testade först men då påstår Access att "Operationen måste använda en fråga som kan uppdateras". Därför gav jag mig ut på nätet och hittade informationen att "MS Access does support multi table updates but syntax is slightly different e.g. UPDATE customers INNER JOIN orders ON customers.customer_id = orders.customer_id SET customers.rating = 'Good' "

Mitt grundproblem beskrivs egentligen i ett annat inlägg under asp.net 2.0 där jag inte kan genomföra en UPDATE med en DetailsView då jag har uppgifter från tabellen Lag med i uppgifterna som ska skrivas tillbaka. De personer som ska uppdatera sidan ska inte behöva se LagID = 15 utan Lag = P98.
Jag tänkte då åtminstone försöka få fram en fungerande SQL-sats för att göra det jag vill men inte ens det klarar jag av.

Jag trodde detta att visa värden från flera tabeller (och skriva tillbaka dessa) var grundkurs när jag började med asp.net. Efter att ha letat runt på nätet i över en vecka, och ställt frågan på olika ställen, förstår jag att det inte är det. Jag har säkert tittat på mer än 50 olika exempel på hur man använder DetailsView och GridView och ALLA kopplas bara mot en tabell.


Svara

Sv: UPDATE med INNER JOINS

Postades av 2006-05-03 17:08:42 - Andreas Hillqvist

Problemet med underfrågan är att den "KAN" retunera flera poster. Problemet är inte att det finns bara en påst. Utan underfrågan måste garantera att bara ett resutlat retuneras. T.Ex. med top eller domän funktioner så som Max och min:

UPDATE Medlemmar SET Medlemmar.LagID = (SELECT MIN(Lag.LagID)
    FROM Lag
    WHERE Lag.Lag = 'P98')
WHERE Medlemmar.MedlemsID = 1421 

Du skulle kunna göra det med en join på följande sätt:
code>
Denna kommer uppdatera Medlemmar.LagID till null om det är så att 'P98' saknas i Lag tabellen.

Du kan även testa:
UPDATE Medlemmar SET LagID = Lag.LagID 
FROM Medlemmar LEFT JOIN Lag ON Lag.Lag = 'P98' 
WHERE Medlemmar.MedlemsID = 1421 


Svara

Sv:UPDATE med INNER JOINS

Postades av 2006-05-03 23:52:36 - Magnus Öberg

Hejsan och tack för ditt svar. Jag är övertygad om att dina förslag fungerar alldeles utmärkt mot en riktig SQL-källa. Access däremot vägrar ta emot dom. På den första svarar den att "Operationen måste använda en fråga som kan uppdateras" och på den andra "Syntaxfel (operator saknas) i frågeuttrycket Lag.LagID FROM Medlemmar LEFT JOIN Lag ON Lag.Lag = 'P98'". Det är väl bara att bita i det sura äpplet och leta upp en riktig sql-databas.


Svara

Sv: UPDATE med INNER JOINS

Postades av 2006-05-04 07:49:49 - Johan Djupmarker

Andreas exempel borde nog se ut såhär iaf, om det fungerar har jag dock ingen riktig koll på...

UPDATE Medlemmar LEFT JOIN Lag ON Lag.Lag = 'P98' 
SET LagID = Lag.LagID 
WHERE Medlemmar.MedlemsID = 1421


<b>Det är väl bara att bita i det sura äpplet och leta upp en riktig sql-databas.</b>

Eller göra frågan i 2 steg...

/Johan


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
5 708
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies