Visualizzazione dei risultati da 1 a 10 su 10

Discussione: select su più tabelle

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155

    select su più tabelle

    Buongiorno a tutti
    ho tre tabelle
    • link
    • news
    • pagina


    ogni tabella è composta da due campi id | id_pagina
    devo recuperare tutti i record con id_pagina = 1 come posso fare?
    Il problema sorge se in una di queste tabelle non c'è un record con id_pagina = 1.

    grazie e buona giornata

    =^_^=

  2. #2

    Re: select su più tabelle

    Ciao.

    Se ti servono solo questi 2 campi potresti usare UNION

    (SELECT id, id_pagina FROM link WHERE id_pagina = 1)
    UNION
    (SELECT id, id_pagina FROM news WHERE id_pagina = 1)
    UNION
    (SELECT id, id_pagina FROM pagina WHERE id_pagina = 1)

  3. #3
    SELECT link.id, link.id_pagina, news.id, news.id_pagina, pagina.id, pagina.id_pagina WHERE link.id_pagina = 1 && news.id_pagina = 1 && pagina.id_pagina = 1

  4. #4
    Originariamente inviato da GiovanniP
    SELECT link.id, link.id_pagina, news.id, news.id_pagina, pagina.id, pagina.id_pagina WHERE link.id_pagina = 1 && news.id_pagina = 1 && pagina.id_pagina = 1
    Hai dimenticato la clausola FROM

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    155
    Grazie a tutti

    =^_^=

  6. #6
    ne approfitto per fare una domanda, con una union del genere si tirano su i dati da tre tabelle, ma da un punto di vista computazionale è più o meno conveniente che fare 3 query di fila?
    e se più conveniente, di molto?

  7. #7
    Originariamente inviato da nicolabao
    ne approfitto per fare una domanda, con una union del genere si tirano su i dati da tre tabelle, ma da un punto di vista computazionale è più o meno conveniente che fare 3 query di fila?
    e se più conveniente, di molto?
    Di preciso non so risponderti, occorrerebbe vedere se hanno fatto degli studi sul tempo di accesso ai dati.

    Comunque, io penso che se il numero dei dati è limitato, cioè nell'ordine delle centinaia, allora si potrebbe usare un'unica query. Invece per una gran quantità di dati usare un prodotto cartesiano tra 3 tabelle diventa micidiale!
    Supponiamo che le 3 tabelle su esposte, abbiano una 8.000 records, una 20.000 ed un'altra 10.000

    Usare un'unica query come quella proposta da GiovanniP vorrebbe dire fare il prodotto cartesiano delle 3 tabelle, quindi 8.000*20.000*10.000 = 1600000000000 records!!!!!!! HELP!

    Si potrebbe migliorare il tutto con delle indicizzazioni mirate sulle tabelle oppure utilizzando delle tabelle temporanee o delle viste.

    Ciao.

  8. #8
    ciao
    grazie per la risposta
    ma io intendevo la soluzione tua con le union o per generalizzare la domanda
    una
    select
    union
    select

    ha lo stesso 'costo' di due select?

  9. #9
    Originariamente inviato da nicolabao
    ciao
    grazie per la risposta
    ma io intendevo la soluzione tua con le union o per generalizzare la domanda
    una
    select
    union
    select

    ha lo stesso 'costo' di due select?
    Ora ho capito.
    Penso proprio che sia più conveniente fare una union e non 2 query separate anche perché con union tu contatti una sola volta mysql Server per eseguire anziché 2 e già qui c'è risparmio di tempo. Precisamente non so dirti di più ripeto dovresti fare una ricerca su prove di benchmark riguardo l'esecuzione di query.

  10. #10
    grazie mille

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.