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

    [MYSQL]Valori duplicati nei risultati della select

    Ciao a tutti,

    sto cercando di creare una query in MYSQL che mi ritorni il dettaglio degli ordini che vengono fatti ad una cassa. Ora vi spiego la struttura del database:


    Tabella ordine
    id
    nome
    tavolo
    coperti
    totale
    resto
    versato

    Tabella bar
    id
    nome
    prezzo
    quantita (quantità rimasta)

    Tabella cucina
    id
    nome
    prezzo
    quantita (quantità rimasta)

    Tabella dettaglio_ordine_bar
    id
    id_ordine(chiave esterna per tabella ordine)
    id_bar(chiave esterna per tabella bar)
    quantita (quantità ordinata)

    Tabella dettaglio_ordine_cucina
    id
    id_ordine(chiave esterna per tabella ordine)
    id_cucina(chiave esterna per tabella cucina)
    quantita (quantità ordinata)


    se io per esempio eseguo un ordine(con id per esempio uguale a 15) di 3 prodotti dalla cucina(GRIGLIATA, PASTA, PESCE) e 4(BIRRA, COCA COLA, THE, CAFFé) dal bar ed eseguo questa query:

    SELECT o.id, o.nome, o.tavolo, o.coperti, o.totale, o.resto, o.versato, c.nome as CUCINA,
    dc.quantita as Q_CUC, c.prezzo as P_CUC, b.nome as BAR, db.quantita as Q_BAR,
    b.prezzo as P_BAR
    FROM ordine o left join dettaglio_ordine_bar db on o.id=db.id_ordine
    left join bar b on b.id=db.id_bar left join dettaglio_ordine_cucina dc on
    o.id=dc.id_ordine left join cucina c on c.id=dc.id_cucina where o.id='15'

    mi vengono restituite, come si vede sotto, 12 righe invece di 7 perche le join mi sdoppiano i valori della cucina e del bar.

    Risultato query (considerando solo le colonne CUCINA e BAR)
    GRIGLIATA | BIRRA
    PASTA | BIRRA
    PESCE | BIRRA
    GRIGLIATA | COCA COLA
    PASTA | COCA COLA
    PESCE | COCA COLA
    GRIGLIATA | THE
    PASTA | THE
    PESCE | THE
    GRIGLIATA | CAFFè
    PASTA | CAFFè
    PESCE | CAFFè


    Come potrei fare per avere 7 righe come vorrei
    _________________________
    Visita www.tifinanzia.com

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Usa una union.

  3. #3
    ho provato ma a me serve che le colonne della cucina e del bar vengano affiancate e non su ricghe diverse.

    per spiegarmi meglio ti mando la query che ho eseguito:

    SELECT o.id, o.nome, o.tavolo, o.coperti, o.totale, o.resto, o.versato, c.nome as CUCINA,
    dc.quantita as Q_CUC, c.prezzo as P_CUC, FROM ordine o left join dettaglio_ordine_cucina dc on o.id=dc.id_ordine left join cucina c on c.id=dc.id_cucina
    union
    SELECT o.id, o.nome, o.tavolo, o.coperti, o.totale, o.resto, o.versato, b.nome as BAR, db.quantita as Q_BAR, b.prezzo as P_BAR FROM ordine o left join dettaglio_ordine_bar db on o.id=db.id_ordine left join bar b on b.id=db.id_bar
    _________________________
    Visita www.tifinanzia.com

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 © 2026 vBulletin Solutions, Inc. All rights reserved.