2016-06-28 3 views
0

Je me demandais s'il était possible de définir par défaut la valeur de certaines colonnes, quelle que soit la valeur de cette colonne pour la ligne précédente - via une requête SELECT.Valeur par défaut de la cellule MySQL à la valeur de la ligne précédente

Kinda difficile de donner un exemple de ce que je veux dire, les tables im traitant sont assez grandes et complexes, mais essentiellement le tableau foo et bar sont liés entre eux par foo.order_id et bar.order_id, puis Theres bar.box_id qui contient la boîte et faire une jointure externe gauche sur les deux va tirer certaines valeurs NULL pour bar.box_id, donc je voulais par défaut essentiellement la valeur dans cette cellule pour quel que soit le bar.box_id précédent peuvent avoir été

Merci!

+0

Il n'existe pas de "ligne précédente" dans une base de données relationnelle. Les tableaux représentent les ensembles * non ordonnés *. –

+0

* Peut-être que vous pourriez traiter cela dans une procédure stockée, mais franchement, je pense que vous allez avoir besoin de traiter cela avec votre code d'application. Sauvegardez simplement, quelque part, "une copie de la ligne précédente, le cas échéant." (Valeur par défaut: * NULL * == "aucune ligne précédente n'existe.") –

+0

Je ne vois pas de problème à tirer ceci si vous y mettez votre esprit – Drew

Répondre

0
la sous-requête

colonne

Il ne ressemble pas à votre problème est trop complexe pour fournir un exemple simple schéma et jeu de résultats souhaité. Cela dit, après plusieurs hypothèses sur ce que vous essayez réellement de faire (pas assez d'informations), vous devrez soit corriger vos données, ou exécuter une sous-requête très médiocre.

SELECT 
    order_id, 
    (
     SELECT bar.box_id 
     FROM bar 
     WHERE foo.order_id <= bar.order_id 
     ORDER BY bar.box_id DESC 
     LIMIT 1 
    ) as box_id 

FROM foo 
+0

C'est ce que j'avais peur de ... avoir une sous-requête. Cela signifie que la sous-requête serait exécutée pour chaque ligne tirée ... :(Peut-être que je vais simplement la décharger en PHP – Justin

+0

Votre seule autre option serait de remplir la table 'bar' avec les références manquantes. pour gérer cette situation, car la relation devrait être contrôlée par une contrainte de clé étrangère, pour exactement cette raison. –