Visualizzazione risultati 1 fino 5 di 5

Discussione: Unire due query mysql

  1. #1
    Guest

    Predefinito Unire due query mysql

    Ciao a tutti, avrei bisogno di unire due queery mysql, ma non è facile come sembra. Ho provato con INNER JOIN, LEFT JOIN, ecc, ma con scarsi risultati.

    Sostanzialmente quello che vorrei fare è selezionare dalla tabella "immagini", dove c'è un campo "owner" tutti gli owner per l'appunto, e da lì, ricercare nella tabella "utenti" il nome di tale utenti attraverso l'id fornito dal campo "owner" delle immagini.


    ES:

    Tab. Immagini

    id img | owner
    1 | 1
    2 | 1
    3 | 2

    Tab. Utenti
    id user | nome user
    1 | Pippo
    2 | Pluto
    3 | Topolino

    Vorrei che mi facesse un count delle immagini inserite da Pippo, uno di quelle inserite da pluto e uno da topolino! Fatemi sapere!

  2. #2
    Guest

    Predefinito

    Prima di tutto ti sconsiglio di usare nomi campo con lo spazio, usa l'underscore "_".

    Poi la query che vuoi è

    Codice PHP:
    SELECT u.nome_user, COUNT(i.id_img)
    FROM immagini i
    INNER JOIN utenti u ON u
    .id_user = i.`owner`
    GROUP BY u.nome_user

  3. #3
    Guest

    Predefinito

    Sisi, ovviamente i valori che ti avevo messo per il db erano simbolici! Il problema della query a dir la verità è che io volevo selezionare soltanto i COUNT che davano come risultato almeno 1. Era quello il problema principale della query (e paradossalmente mi ero scordato di scriverlo). La mia query era così, ma mi dice "#1054 - Unknown column 'tot' in 'where clause".

    Codice PHP:
    SELECT u.*, COUNT(i.id) AS tot
    FROM immagini i
    INNER JOIN utenti u ON u
    .id = i.owner
    WHERE tot
    > 0
    GROUP BY u
    .user

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da enkantar Visualizza messaggio
    Sisi, ovviamente i valori che ti avevo messo per il db erano simbolici! Il problema della query a dir la verità è che io volevo selezionare soltanto i COUNT che davano come risultato almeno 1. Era quello il problema principale della query (e paradossalmente mi ero scordato di scriverlo). La mia query era così, ma mi dice "#1054 - Unknown column 'tot' in 'where clause".

    Codice PHP:
    SELECT u.*, COUNT(i.id) AS tot
    FROM immagini i
    INNER JOIN utenti u ON u
    .id = i.owner
    WHERE tot
    > 0
    GROUP BY u
    .user
    per i dati aggregati non puoi usare WHERE ma devi usare HAVING (però non usare l'alias - tot > 0 - ma proprio la funzione COUNT(i.id) > 0.

    In ogni caso, con la query così come te l'ho scritta, hai già i valori >0 (se la eseguivi te ne saresti accorto).

    Se invece vuoi i dati con conteggio >1 ha un senso.

  5. #5
    Guest

    Predefinito

    Grazie mille! Funziona!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •