Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Query per MySql 3.23 non riesco proprio a formularla

    Salve ho un problema:

    ho una tabella "offerte" con alcuni campi....diciamo 8 campi.
    Uno di questi campi è "id_offerta" ed è chiave primaria, altri 4 sono "tipo", "marca", "modello", "misura".
    Ho la necessità di stabilire se ci sono dei duplicati confrontando ogni riga con tutte le altre e stabilendo che c'è un duplicato quando i 4 campi fra due diverse righe sono uguali...cioè deve valere che i due "id_offerta" delle due righe da confrontare siano diversi e i campi tipo, marca, modello e misura siano uguali.
    La gatta più grossa da pelare però è che la query va data in pasto a mysql 3.23...che a quanto ho potuto capire non accetta le sotto-query...

    c'è qualcuno di buona volontà che mi può aiutare

    Grazie e distinti saluti

  2. #2
    ti risolvi il problema mettendo una chiave unica su TUTTI e 4 i campi che ti interessa controllare

    non parlo di 4 chiavi uniche ma una chiave sola, unica, che comprenda tutti e 4 i campi

    in questo modo sei sempre certo che nn ci sono doppioni e vai a verificare questa cosa all'inserimento/modifica

  3. #3

    Re: Query per MySql 3.23 non riesco proprio a formularla

    Originariamente inviato da mimmo.caserta
    Ho la necessità di stabilire se ci sono dei duplicati confrontando ogni riga con tutte le altre e stabilendo che c'è un duplicato quando i 4 campi fra due diverse righe sono uguali...cioè deve valere che i due "id_offerta" delle due righe da confrontare siano diversi e i campi tipo, marca, modello e misura siano uguali.
    SELECT count(*) AS numero, tipo, marca, modello, misura FROM tabella GROUP BY tipo, marca, modello, misura

    dove numero è maggiore di 1 vuol dire che ci sono duplicati

  4. #4
    credo che volesse farlo in una sola query ... perché da quanto ho capito vorrebbe evitare duplicati in un elenco e se dovesse fare cosi dovrebbe estrarre tutte le righe che deve visualizzare e poi dovrebbe usare query query su ogni id per vierificare killando tutto

  5. #5
    bravo daniele...in effetti l'idea era quella...

    è vero potrei fare la chiave unica sui 4 campi...xo' ce ne sono anche altri di campi, magari diversi..quindi vorrei che fossero visualizzati i duplicati proprio xké così si può controllare caso per caso...e scegliere se killare o mantenere ;-)...grazie mille a tutti

  6. #6
    Dimenticavo di dirvi che siete preziosi...come al solito

  7. #7
    Originariamente inviato da daniele_dll
    credo che volesse farlo in una sola query ...
    e io infatti una sola query ho scritto

    Ho la necessità di stabilire se ci sono dei duplicati
    La mia query lo stabilisce.

    Se si tratta di evitare duplicati in inserimento, è sufficiente un
    SELECT id FROM tabella WHERE tipo = $x, marca = $y, modello = $z, misura = $k LOCK IN SHARE MODE

    se ti dà risultati vuol dire che c'è già un record con quei valori, quindi blocchi l'inserimento.
    Se non ottieni risultati vai tranquillo di inserimento senza rischio di duplicati

  8. #8
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    REPLACE è stato introdotto con mysql4 ?
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  9. #9
    ah, se non hai innodb (non mi ricordo se c'erano già nella 3.23, probabilmente no) devi usare il lock table write su tutto il blocco invece di lock in share mode nella select

  10. #10
    Originariamente inviato da chris
    REPLACE è stato introdotto con mysql4 ?
    non lo so, in ogni modo se vuoi avvertire sulla duplicazione interagendo con l'utente REPLACE non va bene, in altri casi può risolvere invece.

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