Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    INNER JOIN con doppia verifica

    Salve,
    si può fare una cosa del genere?
    codice:
    SELECT * FROM prodotti INNER JOIN disponibilita ON (prodotti.id = disponibilita.idProdotto, disponibilita.idPuntoV = $idPuntoV)
    ho provato anche così ma non va:
    codice:
    SELECT * FROM prodotti INNER JOIN disponibilita ON prodotti.id = disponibilita.idProdotto WHERE idPuntoV = $idPuntoV

  2. #2

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    la seconda con la WHERE puoi certamente farla,
    è la "classica" soluzione
    se non ti funziona ci deve essere qualcosa nella variabile



    la prima invece direi che non si puo fare,
    ma solo a titolo accademico e per arrampicarci sui vetri
    se vogliamo mettere una variabile nelle JOIN allora
    creando una VistaVirtuale ci avviciniamo
    codice:
    SELECT 
    *
    FROM 
    prodotti 
    INNER JOIN 
    (
    (SELECT DISTINCT $idPuntoV AS TuaVariabile FROM prodotti)  AS VistaVirtuale 
    INNER JOIN 
    disponibilita 
    ON 
    VistaVirtuale.TuaVariabile = disponibilita.idPuntoV
    ) 
    ON 
    prodotti.id = disponibilita.idProdotto
    ;
    .

  4. #4
    Allora, in effetti utilizzando la query sopra citata, funziona..
    Ma con la vera query non va.. E' questa:
    codice:
    SELECT * FROM ((prodotti INNER JOIN marche
     ON prodotti.idMarca = marche.id) 
    INNER JOIN tipologie 
    ON prodotti.idTipologia = tipologie.id) 
    INNER JOIN disponibilita
     ON prodotti.id = disponibilita.idProdotto 
    WHERE disponibilita.idPuntoV = $idPuntoV

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Luigi636 Visualizza il messaggio
    .........Ma con la vera query non va.. E' questa:...........
    Secondo me è giusta
    I campi relativi ai JOIN sono tutti numerici ?????
    Il campo idPuntoV è numerico ?????
    la variabile è numerica ?????

    Non vedo altro che potrebbe disturbare


    magari riprivala cosi:
    - Racchiuso la WHERE fra parentesi
    - Aggiunto il PuntoVirgola finale
    - Redistribuito i JOIN

    codice:
    SELECT 
    *
    FROM 
    tipologie 
    INNER JOIN 
    (
    (
    marche 
    INNER JOIN 
    prodotti 
    ON 
    marche.id = prodotti.idMarca
    ) 
    INNER JOIN 
    disponibilita 
    ON 
    prodotti.id = disponibilita.idProdotto
    ) 
    ON 
    tipologie.id = prodotti.idTipologia
    WHERE 
    (disponibilita.idPuntoV=$idPuntoV)
    ;
    Facci sapere

    .

  6. #6
    se mi avessero dato un centesimo per ogni volta che ho chiesto "cosa vuol dire NON VA?" sarei straricco

  7. #7
    Risolto.. A quanto pare il problema era che la tabella disponibilita non copriva tutti gli idProdotto ed il DataTable mi andava in crash

  8. #8
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Certo che il buon Optime ha perfettamente ragione


    Quote Originariamente inviata da Luigi636 Visualizza il messaggio
    ......la tabella disponibilita non copriva tutti gli idProdotto ed il DataTable mi andava in crash
    Non mi convince .......
    se manca qualche idProdotto nella tabela disponibilita dovrebbe semplicemente restituire dei record in meno
    se la tabella disponibilita fosse vuota non restituirebbe nulla,
    ...... non mi aspetterei il crash

    Comunque tutto è bene quel che finisce bene ......

    .

  9. #9
    quel "non va" probabilmente voleva dire che il problema era più a valle (query che non riporta record, eccezione non gestita). Ma non essendo indovini...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.