|
| 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
| |
|
|