Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69

    SQL: Natural Join Su due Tabelle

    Buon Pomeriggio, mi trovo alle prese con un problemino abbastanza stupido, ma allo stesso tempo difficoltoso, per chi come me, al momento, conosce veramente poco l'SQL
    Espongo il problema, ho necessità di modificare i valori di un campo, contenuto in una tabella A usando una condizione contenuta in un campo di una tabella B

    tabella1
    campo 1

    tabella 2
    campo 2


    UPDATE tabella1
    SET campo1 = campo1 + (campo1 * 0,04)
    WHERE tabella2.campo2 = valore

    Ovviamente non funziona perchè non riesce a leggere il valore tramite where. Gentilemte qualcuno può suggerirmi come risolvere la cosa? Ringrazio anticipatamente

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325

    Moderazione

    C'è un forum dedicato ai Database e al linguaggio SQL.
    Sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Ops, chiedo scusa per aver sbagliato sezione. Il problema di cui sopra, nasce dal fatto che Tabella1 e tabella 2 non hanno nessun campo in comune. Se ad esempio faccio così

    UPDATE jos_vm_product_price
    SET product_price = product_price + (product_price* 0,04)
    WHERE jos_vm_manufacturer.manufacturer_id = 13

    Mi dice che chiaramente non trova nessun valore nel Where, come posso risolvere?

  4. #4
    come le relazioneresti le due tabelle 'a mano'?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    In che senso? Puoi spiegarti meglio?

  6. #6
    tu vuoi aggiornare una tabella con il valore di un'altra. come lo faresti se invece di tabelle di db avessi una stampata su carta?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    No, non voglio aggiornare una tabella con il valore di un'altra, il valore aggiornato dovrebbe essere quello già presente + una percentuale, i campi della tabella1 che devono essere aggiornati però, devono avere id uguale ad un campo che è presente in una tabella 2. Non so se mi son spiegato bene

    Su carta lo farei così

    TABELLA 1 TABELLA 2
    id Nome Prezzo id Nome
    1 Prodotto1 5 5 Marca 1
    2 prodotto2 6,5 6 Marca 2
    3 prodotto3 7

    Aggiungi al prezzo del prodotto 1 il 4% solo ai prodotti di tabella1 che hanno id di tabella2 = 5

    Qui c'è la struttura del database link

    e le tabelle interessate sono jos_vm_manufacturer
    e jos_vm_product_price

  8. #8
    posta la struttura delle 2 tabelle

  9. #9
    se non sono correlate usa una subselect, non una join

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Ho provato anche a fare così

    UPDATE jos_vm_product_price
    SET product_price = product_price + (product_price* 0,04)
    WHERE (select manufacturer_id FROM jos_vm_manufacturer WHERE manufacturer_id = 13)

    Ma mi dice
    #1241 - Operand should contain 1 column(s)

    Il problema nasce dal fatto che i prodotti con manufacturer_id= x sono più di uno, da qui l'errore di ridondanza, quindi come si gestisce questa cosa?? Ringrazio anticipatamente

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.