-1
votes

Comment faites-vous une valeur SQL NULL dans un numéro?

J'ai une table jointe, puis je l'ai fait en matrice comme ceci

​​  Entrez la description de l'image ici p>

Donc, sur le tableau 1 et 2, il n'y a pas d'élément dans la base de données C'est pourquoi le qty_stock code> renvoyé null p>

est un moyen d'activer le null sur qty_stock code> dans un numéro 0 code>?

Voici mon code P>

$getmaterial = ContractProduct::select(
        'contract_product.ref_contract_id',
        'contract_product.ref_product_id',
        'product_item.name as product_name',
        'contract_product.qty as qty_taken',
        'stock.qty_stock',
        'contract_product.unit_price as price',
        'contract_product.sub_total_price as budget',
        \DB::raw('ABS(stock.qty_stock - contract_product.qty) as qty')
      )
      ->leftjoin('contract_document', 'contract_product.ref_contract_id', '=', 'contract_document.contract_id')
      ->leftjoin('product_item', 'contract_product.ref_product_id', '=', 'product_item.code')
      ->leftjoin('stock', 'contract_product.ref_product_id', '=', 'stock.ref_product_id')
      ->where('contract_document.ref_project_id', $getquoid->project_id)
      ->get();


0 commentaires

4 Réponses :


2
votes

Utiliser coalesce () : xxx

coalesce () est la fonction SQL standard pour remplacer null valeurs. Il renvoie la première valeur qui n'est pas null ses arguments - il peut y avoir n'importe quel nombre d'arguments.


0 commentaires

0
votes

Si vous souhaitez remplacer null code> avec 0, vous pouvez utiliser coalesce code> ou ou

CASE WHEN stock.qty_stock is not null then stock.qty_stock else 0 end


0 commentaires

1
votes

Je recommande de faire cela sur la variable $ getmaaterial code> au lieu de le faire avec le constructeur de requêtes (c'est-à-dire à l'aide de coalesce code>):

Où que vous utilisiez QTy_stock Code>, vous pouvez simplement dire: P>

for ($i = 0; $i < $getmaterial->count(); $i++) {
    $getmaterial[i].qty_stock = $getmaterial[i].qty_stock | 0;
}

// or:

for ($i = 0; $i < $getmaterial->count(); $i++) {
    if ($getmaterial[i].qty_stock == null) {
        $getmaterial[i].qty_stock = 0;
    }
}


0 commentaires

0
votes

Vous pouvez utiliser ifnull () code> ou coalesce () code> pour ce dernier fonctionne la même manière.

ISNULL(stock.qty_stock) as qty_stock


0 commentaires