/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
if i et query [mySQL]
Fra : Jonas Levring


Dato : 20-06-02 12:34

Hej

jeg ville blot lige høre om det er muligt at lave en ifsætning eller ling i
et query ?

det er fordi hvis man nu eks. kun har 3 varer på lager. Er det så muligt at
checke noget i retningen af:

INSERT INTO bestillinger ("navn","vare","antal") VALUES
("bent","fiskestang","2")
if ((select varelager.antal from varelager where
varelager.varenavn="fiskestang") >= 2)

håber i kan forstå meningen... :)) - jeg har ikke testet queriet, meeen er
det noget der virker, eller hvad skal man evt. gøre for at få det til at
virke ??


mvh.
Jonas Levring



 
 
Nis Jorgensen (20-06-2002)
Kommentar
Fra : Nis Jorgensen


Dato : 20-06-02 12:53

On Thu, 20 Jun 2002 13:34:15 +0200, "Jonas Levring"
<jonas@dette_skal_fjernes_levring.dk> wrote:

>INSERT INTO bestillinger ("navn","vare","antal") VALUES
>("bent","fiskestang","2")
> if ((select varelager.antal from varelager where
>varelager.varenavn="fiskestang") >= 2)
>
>håber i kan forstå meningen... :)) - jeg har ikke testet queriet, meeen er
>det noget der virker, eller hvad skal man evt. gøre for at få det til at
>virke ??

Well, Jeg ville nok gøre det noget i retning af ...

INSERT INTO bestillinger (navn, vare, antal)
SELECT 'bent' AS navn, varenavn AS vare, 2 AS antal
FROM varelager
WHERE varenavn = 'fiskestang' AND antal >=2

(ikke testet)

Bemærk: enkelte anførselstegn om strenge, dobbelte anførselstegn eller
ingenting omkring tabel-/feltnavne.

--
Nis Jorgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Jonas Levring (20-06-2002)
Kommentar
Fra : Jonas Levring


Dato : 20-06-02 16:15

> INSERT INTO bestillinger (navn, vare, antal)
> SELECT 'bent' AS navn, varenavn AS vare, 2 AS antal
> FROM varelager
> WHERE varenavn = 'fiskestang' AND antal >=2

Det er ikke umiddelbart noget jeg kan få til at virke ?! - hvad kan være
galt ?

INSERT INTO bestillinger (navn,vare,antal)
SELECT '$navn' AS navn, '$varenavn' AS vare, '$antal' AS antal,
FROM varelager
WHERE bestillinger.vare='$varenavn' AND $faktisk_lagerbeholdning-(SELECT
sum(faktureret.solgte_varer) FROM faktureret WHERE
varenavn=$varenavn)-sum(bestillinger.antal) >= '$antal'

Jeg har forestillet mig at det skal se ca. sådan her ud.. fordi: jeg
indtaster sammen med en ordre hvormange enheder af varen jeg ved jeg har på
lager ($faktisk_lagerbeholdning), så skal summen af de allerede fakturerede
varer (endnu ikke afhentede) trækkes fra, og til sidst skal bestillingerne
trækkes fra.. (det må være det antal varer jeg har tilbage og kunne sælge)
og hvis det tal så er større end det antal jeg forsøger at indtaste som
bestilling, så skal en ny record oprettes.. ellers skal den ikke

jeg ved godt det virker rodet, men jeg håber i kan hjælpe..

/Jonas Levring



Nis Jorgensen (20-06-2002)
Kommentar
Fra : Nis Jorgensen


Dato : 20-06-02 17:55

On Thu, 20 Jun 2002 17:14:33 +0200, "Jonas Levring"
<jonas@dette_skal_fjernes_levring.dk> wrote:


>Det er ikke umiddelbart noget jeg kan få til at virke ?! - hvad kan være
>galt ?

Det ville være rart hvis du fortalte hvordan det ikke virkede ...

>INSERT INTO bestillinger (navn,vare,antal)
>SELECT '$navn' AS navn, '$varenavn' AS vare, '$antal' AS antal,
>FROM varelager
>WHERE bestillinger.vare='$varenavn' AND $faktisk_lagerbeholdning-(SELECT
>sum(faktureret.solgte_varer) FROM faktureret WHERE
>varenavn=$varenavn)-sum(bestillinger.antal) >= '$antal'
>
>Jeg har forestillet mig at det skal se ca. sådan her ud.. fordi: jeg
>indtaster sammen med en ordre hvormange enheder af varen jeg ved jeg har på
>lager ($faktisk_lagerbeholdning), så skal summen af de allerede fakturerede
>varer (endnu ikke afhentede) trækkes fra, og til sidst skal bestillingerne
>trækkes fra.. (det må være det antal varer jeg har tilbage og kunne sælge)
>og hvis det tal så er større end det antal jeg forsøger at indtaste som
>bestilling, så skal en ny record oprettes.. ellers skal den ikke


Dit aktuelle spørgsmål er jo en anelse mere kompliceret end det
forrige. Måske skulle du give en helt præcis beskrivelse af dine
tabeller, variable fra scriptet samt hvad du ønsker at opnå.

Med hensyn til hvorfor ovenstående ikke virker:

1. Du henviser til bestillinger.vare og bestillinger.antal i dine
selects - men bestillinger er ikke nævnt i FROM-klausen.

2. Sidst jeg tjekkede, understøttede mySQL ikke subqueries i
standardindstillingen. Det kan være jeg tager fejl.


Måske kan du bruge noget i retning af dette:

INSERT INTO bestillinger (navn,vare,antal)
SELECT '$navn' AS navn, '$varenavn' AS vare, '$antal' AS antal,
FROM varelager LEFT OUTER JOIN faktureret
ON varelager.varenavn = faktureret.varenavn
WHERE varelager.vare='$varenavn'
GROUP BY varenavn
HAVING $faktisk_lagerbeholdning - SUM(faktureret.antal) >= $antal


--
Nis Jorgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste