begin process at 2012 05 27 00:51:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

FireBird

 > 

Débutant(s)

 > 

UPDATE & JOIN avec SQL/FIREBIRD


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

UPDATE & JOIN avec SQL/FIREBIRD

jeudi 6 octobre 2011 à 20:36:46 | UPDATE & JOIN avec SQL/FIREBIRD

RV2931

Bonjour,

J'aurai besoin de faire un truc un peu compliqué avec 2,3 tables. Je ne vois pas trop comment car apparemment, Firebird ne gère pas les UPDATE multitables.
Ma base concerne un aéroport.
Il y a l'environnement, c'est à dire l'aéroport dans lequel on se trouve, LFPG pour Paris par exemple. Il y a des avions avec une type avions (B777 pou un boeing 777...) et un plan de vol appelé "Flightplan" qui contient toute les information concernant le vol, notamment son poids.
Un type d'avions donné à un poids à vide, un poids maximum au décollage MAXTO (pour take off) et un poids maximum à l'atterissage MAXLG (Pour landing)

J'ai donc 3 tables ENVIRONMENTS, FLIGHTPLANS, AIRCRAFTS
ENVIRONMENTS contient l'information une clé ENVIRONMENTS.ID associé au nom textuel de l'environnement ENVIRONMENTS.NAME
FLIGHTPLANS contient le type d'avion TYPE et le poids donné arbitrairement à un avion (c'est un simulateur) (clé, index ID unique du plan de vol)
AIRCRAFTS contient toutes les informations physiques et limites, normes et autres pour chaque type TYPE d'avions pouvant être utilisés dans les FLIGHTPLANS. (clé, index ID unique du type avion)

FLIGHTPLANS.TYPE étant forcément contenu dans la liste des AIRCRAFTS.ID
FLIGHTPLANS.ENV étant l'index de l'environnement dont le nom textuel est donné par ENVIRONMENTS.NAME avec FLIGHTPLANS.ENV = ENVIRONMENTS.ID
FLIGHTPLAN.WEIGHT étant le poids de l'avion en pourcentage de la différence WEIGHTMAXTO - WEIGHTEMPTY
Ce qui veut dire que WEIGHT = 0 => WEIGHTEMPTY et WEIGHT = 100 => WEIGHTMAXTO
FLIGHTPLAN.ADEP étant l'aéroport de départ, égal à ENVIRONMENTS.NAME si c'est un départ.
FLIGHTPLAN.ADES étant l'aéroport de desctination, égal à ENVIRONMENTS.NAME si c'est une arrivée.
AIRCRAFTS.WEIGHTEMPTY,AIRCRAFTS.WEIGHTMAXLG et AIRCRAFTS.WEIGHTMAXTO étant respectivement le poids à vide, maximum à l'atterrissage et maximum au décollage.

Mon but est d'affecter des poids cohérents, aléatoirement compris entre WEIGHTEMPTY et WEIGHTMAXTO pour un vol au départ (FLIGHTPLAN.ADES = ENVIRONMENTS.NAME)
et d'affecter des poids cohérents, aléatoirement compris entre WEIGHTEMPTY et WEIGHTMAXLG pour un vol à l'arrivée.

Pour l'instant, j'ai 3 requêtes :
Code sql :
/* Met un poids compris entre 70 et 100% pour les départs. */
UPDATE FLIGHTPLANS
SET WEIGHT = cast(70+RAND()*30 AS integer)
WHERE FLIGHTPLANS.ID IN (
SELECT FLIGHTPLANS.ID
FROM FLIGHTPLANS
JOIN AIRCRAFTS
ON FLIGHTPLANS.TYPE = AIRCRAFTS.ID
JOIN ENVIRONMENTS
ON FLIGHTPLANS.ENV = ENVIRONMENTS.ID
WHERE FLIGHTPLANS.ADEP = ENVIRONMENTS.NAME
}

/* Met un poids compris entre 10 et 50% pour les arrivées. */
UPDATE FLIGHTPLANS
SET WEIGHT = cast(10+RAND()*40 AS integer) /* => valeurs arbitraires, comment faire pour récupérer le WEIGHTMAXLG de AIRCRAFTS */
WHERE FLIGHTPLANS.ID IN (
SELECT FLIGHTPLANS.ID
FROM FLIGHTPLANS
JOIN AIRCRAFTS
ON FLIGHTPLANS.TYPE = AIRCRAFTS.ID
JOIN ENVIRONMENTS
ON FLIGHTPLANS.ENV = ENVIRONMENTS.ID
WHERE FLIGHTPLANS.ADES = ENVIRONMENTS.NAME
}


Mon but serait plutôt que d'allouer une valeur aléatoire comprise entre deux bornés MIN (10%) MAX (50%) arbitraires, je voudrais affecter une valeur comprise entre MIN (10%) et MAX = la valeur de WEIGHTMAXLG du type de l'avion concerné par le plan de vol.

J'ai essayé des
Code sql :
UPDATE FLIGHTPLANS
JOIN AIRCRAFTS
ON FLIGHTPLANS.TYPE = AIRCRAFTS.ID
JOIN ENVIRONMENTS
ON FLIGHTPLANS.ENV = ENVIRONMENTS.ID
SET WEIGHT =  cast(10+RAND()*(WEIGHTMAXLG - 10) AS integer)
WHERE FLIGHTPLANS.ADES = ENVIRONMENTS.NAME

et différentes variante que j'ai pu trouver sur les forums, mais rien en semble fonctionner. Pour celui-ci, l'erreur est Dynamic SQL error code = -104 - Token unknown - line 2, column 1 - JOIN Could not prepare statement

Je fais que commencer le SQL pour info...

Merci d'avoir lu

Hervé

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
vendredi 7 octobre 2011 à 21:56:54 | Re : UPDATE & JOIN avec SQL/FIREBIRD

galled

Bonjour,

Je ne sais pas si ça fonction avec a base de données., mais tu peux sans doute faire un truc comme

UPDATE FLIGHTPLANS
SET WEIGHT = cast(10+RAND() * (SELECT max(TON_POID_DAVION) FROM LE RESTE... )A INTEGER)
WHERE FLIGHTPLANS.ADES = ENVIRONMENTS.NAME


Cette discussion est classée dans : type, id, flightplans, environments, aircrafts


Répondre à ce message

Sujets en rapport avec ce message

Affichage d'une base de donnée multirelationnelle [ par XDsl13 ] Bonjour.J'ai une base de donnée avec trois tables la table principal article et deux table avec dedans referencé pour l'une des marque de vêtement et If dans query [ par nborges ] Hello,je voudrais savoir si je peux metre un IF dans une query ex:select ID,Descr, Type,if type='R' beginselect.... as Aselect... as Bendelse if  type Probleme avec une requete [ par deadstar2 ] Bonjour à tous, Je n'ai pas un excellent niveau en sql, j'aimerais faire appel à vos connaissances pour une requete dont je n'arrive pas à obtenir ce Pbm de foreign key pas prises en compte [ par romca ] Salut voilà j'ai un pbm sous ma distrib mes foreign key ne sont pas pris en compte et pourtant j'ai aucune erreur.<?xml:namespace prefix = o ns = "urn Problème de dates [ par gabrenicolas ] Bonjour à tous, Bon j'ai un problème de date: en effet dans un formulaire, je calcul le nombre d'activité faite par jour dans une colonne A, dans la Requête complexe avec jointures, rollup et calculs [ par kfran85 ] Voici mon problème: Je dois faire une requête pour calculer les commissions sur ventes de commerciaux J'ai cette requête qui me donne bien les montan PROBLEME AVEC UNE REQUETE SQL [ par stade13 ] salut tout le monde , voila j'epsere bien avoir de l'aider a fin de detecté l'erreur CREATE TABLE "FIL" ( "ID_FIL" NUMBER NOT NULL ENABLE , "COULE Pb Requete SQL JOIN [ par gabrenicolas ] Bonjour à tous, Petit problème avec le code suivant ca ne passe pas JOIN error... Quelqu'un pourrait-il éclairer ma lanterne... le code:[code=vb Concatener dans une requete sql [ par gabrenicolas ] Bonjour à tous , Petit problème, pour une fois la requête fonctionne nickel cependant j'ai un problème avec ma concatenation.. Il y aurait-il un pr Missing operators [ par gabrenicolas ] Bonjour à tous, Je crois que j'ai besoin d'un petit peu d'aide... le code: [code=vb]sqlQuery = "SELECT Count(*) AS CountOfTYPE " & _ "FROM (USERS I


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,897 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales