2010-05-16 6 views
0

J'ai une table de commande dans la base de données MySQL, ayant un champ/colonne qui stocke l'horodatage de la date où la commande a été passée.colonne calculée ou procédure stockée ou juste fonction php nécessaire?

Je dois calculer quand la commande doit être expédiée. Je pourrais probablement trouver comment écrire une fonction pour calculer la date d'expédition et appeler cela quand cela est nécessaire mais je pense, pas sûr qu'il peut être plus logique d'avoir la date d'expédition comme une colonne calculée. Cela étant dit, je n'ai jamais utilisé une procédure stockée ou créé un champ calculé. Le plus tard, je pense que ce serait mieux mais encore une fois pas sûr. J'avais l'habitude de faire du champ calculé tout le temps dans FMP mais je me suis éloigné de ce programme.

+0

il suffit de le calculer à un moment précis. quel est le problème? –

+0

pense juste qu'il peut être préférable de l'avoir dans un champ afin que je puisse y accéder à partir de n'importe quelle application sans avoir à le calculer à chaque déclaration de sélection – mcgrailm

+0

SQL est basé sur la base; Alors que vous êtes libre de créer votre fonction, elle ne sera pas bien mise à l'échelle (elle deviendra plus lente si vous augmentez le nombre d'enregistrements auxquels vous l'appliquez). –

Répondre

1

Je le ferais comme view. Il s'agit essentiellement d'une instruction select dans laquelle une colonne de résultat est la date d'expédition. Vous pouvez également ajouter d'autres colonnes pertinentes. Toute application ayant accès à la base de données peut alors accéder à la vue de la même manière que les tables ordinaires.

Si votre table ressemblait à:

create table orders(id INTEGER PRIMARY KEY AUTO_INCREMENT, 
        order_date DATETIME);                  

et vous avez toujours livré 3 jours après, vous pouvez utiliser:

create view order_view as 
    select id, 
     order_date, 
     order_date + INTERVAL 3 DAY as ship_date 
    from orders; 

L'instruction select peut être faite aussi complexe que nécessaire. Ensuite, vous venez de lire order_view dans n'importe quelle application, comme s'il s'agissait d'une table ordinaire.

+0

cela pourrait être cool je vais jouer avec cela et voir si cela correspond à la facture. y at-il des mises en garde à l'utilisation de cette – mcgrailm

Questions connexes