Visualizzazione dei risultati da 1 a 6 su 6

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quesito più difficile di quanto pensassi dunque più interessante.

    Prova questo (non testato).

    Codice PHP:
    <?php
    $forn_accettati 
    = array("pippo"); 
    $numero_elementi count($forn_accettati);
    // l'articolo deve avere tutti i fornitori della lista - quindi una INNER JOIN per fornitore funziona da AND => fornitore 1 and fornitore 2 etc...
    $innerClause "";
    foreach(
    $forn_accettati as $chiave => $valore)
    {
     
    $innerClause .= " INNER JOIN tab_prodotti tp$chiave ON (op.id_prodotto = tp$chiave.id_prodotto) and tp$chiave.fornitore = '$valore' ";
    }
    // il numero dei fornitori per l'articolo deve essere pari al numero di fornitori nella lista
    $whereClause " WHERE EXISTS(SELECT COUNT(*) FROM tab_prodotti tpx WHERE op.id_prodotto = tpx.id_prodotto HAVING COUNT(*) = $numero_elementi)";
    // con la prima clausola siamo sicuri di prendere un articolo "aperto" sù tutti i fornitori
    // con la seconda scartiamo gli articoli che hanno più fornitori del numero di fornitori della lista
    $query "SELECT id_ordini from tab_ordini to INNER JOIN ordini_prodotti op ON(to.ordine_id = op.ordine_id)"
             
    $innerClause $whereClause;
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Ciao Grazie della risposta in primis.

    In realtà credo di essermi espresso male, una cosa del genere l'ho provata anche io però succede che se in un ordine ho un prodotto del fornitore pippo e uno del fornitore pluto, l'orrdine viene comunque considerato, perchè il fornitore è cmq presente.

    Io vorrei che gli ordini presi in considerazione abbiano unicamente "pippo" come fornitore al loro interno e se ve ne è uno in più devono essere scartati. Con un solo fornitore nell'array la query proposta andrebbe anche bene ma se oltre a pippo ci fosse un'altro fornitore nell'array la questione si complica.

    Con due fornitori nell'array, mi servirebbe tirare fuori tutti gli ordini con "pippo" e "pluto" o solo con "pippo" o solo con "pluto", se vi è un fornitore in più non menzionato devo saltare l'ordine.

    Più ci penso e più credo non si possa fare senza ciclare i risultati ma resto speranzoso, grazie sempre in anticipo.

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.