2017-06-15 1 views
0

Qu'est-ce que je dois hasarder dans mon code pour utiliser le premier SQL et pas le premier?
Quelqu'un peut-il m'aider s'il vous plaît?Qu'est-ce que je dois au hasard dans mon code pour utiliser le premier SQL et pas le premier?

 //return supplies 
      SELECT * FROM suppliers WHERE id=$id 

     //return all suppliers itens 
    SELECT 
    suppliers.*, 
    third_party_services.name as servicename 
FROM 
    suppliers 
INNER JOIN 
    suppliers_services 
ON 
    suppliers.id = suppliers_services.supplier_id 
LEFT JOIN 
    third_party_services 
ON 
    suppliers_services.id = third_party_services.id 
WHERE 
    suppliers_services.supplier_id = $id 

J'utilise un ajax pour afficher toutes les données dans un

modal point ajax à cette .php

if(!empty($_POST)){ 
    if (isset($_POST['id']) && $_POST['id'] > 0){ 
     $id=$_POST['id']; 
     GetSuppliersView(); 
    } 
} 
function GetSuppliersView() { 
    global $db; 
    global $id; 
    try{ 
     $query = $db->query("SELECT * FROM suppliers WHERE id=$id"); 
     $row=$query->fetch(PDO::FETCH_ASSOC); 
     $result['success'] = true; 
     $result['result'] = $row; 
     echo json_encode($result); 
    return true; 
    } catch (PDOException $pe) { 
     return false; 
    } 
} 

et voici le code ajax

$('.itemview').click(function (e) { 
    e.preventDefault(); 
    $("#viewname").empty(); 
    $("#viewsuppliersocialname").val(""); 
    $("#viewsupplierfantasyname").val(""); 
    $("#viewsuppliercnpj").val(""); 
    $("#viewsuppliercontact").val(""); 
    $("#viewsupplieraddress").val(""); 
    $("#viewsupplierphone1").val(""); 
    $("#viewsupplierphone2").val(""); 
    $("#viewsupplierphone3").val(""); 
    $("#viewsupplieremail1").val(""); 
    $("#viewsupplieremail2").val(""); 
    $("#viewpaymentmethods").val(""); 
    var uid = $(this).data('id'); 
    $.ajax({ 
     type: "POST", 
     url: "resources/controllers/get.php", 
     data: 'id='+uid, 
     dataType: "json", 
     success: function (data) { 
      if (data.success) { 
       $('#viewname').append(data.result.name); 
       $('#viewsuppliersocialname').val(data.result.social_name); 
       $('#viewsupplierfantasyname').val(data.result.fantasy_name); 
       $('#viewsuppliercnpj').val(data.result.cnpj); 
       $('#viewsuppliercontact').val(data.result.contact); 
       $('#viewsupplieraddress').val(data.result.address); 
       $('#viewsupplierphone1').val(data.result.phone1); 
       $('#viewsupplierphone2').val(data.result.phone2); 
       $('#viewsupplierphone3').val(data.result.phone3); 
       $('#viewsupplieremail1').val(data.result.email1); 
       $('#viewsupplieremail2').val(data.result.email2); 
       $("#viewpaymentmethods").val(data.result.paymenttype).change(); 
       $("#MethodView").modal('show'); 
      } else { 

      } 
     } 
    }); 
}); 

Quelqu'un peut-il m'aider s'il vous plaît à faire cela?

+0

quel est le problème avec 'JOIN'? – Ravi

Répondre

0
SELECT 
    suppliers.*, 
    third_party_services.name as servicename 
FROM 
    suppliers 
INNER JOIN 
    suppliers_services 
ON 
    suppliers.id = suppliers_services.supplier_id 
LEFT JOIN 
    third_party_services 
ON 
    suppliers_services.id = third_party_services.id 
WHERE 
    suppliers_services.supplier_id = $id 
0

Vous pouvez faire plusieurs REJOINT et il résout juste de gauche à droite:

SELECT 
    suppliers.*, 
    suppliers_services.*, 
    third_party_services.* 
FROM 
    suppliers 
INNER JOIN 
    suppliers_services 
ON 
    suppliers.id = suppliers_services.supplier_id 
LEFT JOIN 
    third_party_services 
ON 
    suppliers_services.id = third_party_services.id 
WHERE 
    supplier.id = $id 
+0

En regardant un comportement de coin-case: Clairement, vous voulez produire une ligne même si "third_party_services" avec $ id n'existe pas parce que vous faites la jointure gauche. Cela couvre toujours ce cas. Dans le cas où $ id n'atteindrait pas quelque chose dans "suppliers_services" où "supplier_id = $ id", votre ancienne requête ne produirait pas de ligne, ce qui n'est toujours pas le cas parce que nous faisons une jointure interne (c'est à dire t apparaisse dans "suppliers_services" il ne produit pas de ligne, même si ce fournisseur peut exister). –

+0

Il fonctionne avec ceci: SELECT ' fournisseurs *, suppliers_services *, third_party_services * DE fournisseurs INNER JOIN suppliers_services SUR suppliers.id = suppliers_services.supplier_id LEFT JOIN third_party_services SUR de suppliers_services... .id = third_party_services.id O WH fournisseurs_services.supplier_id = 154' mais comment puis-je travailler avec mon code? – Debs

+0

J'ai mis à jour le post principal, comment puis-je travailler avec? Je dois montrer toutes les informations sur les fournisseurs et tous les services – Debs