Visualizzazione dei risultati da 1 a 6 su 6

Discussione: aiuto query

  1. #1

    aiuto query

    $search2 = "SELECT agenzie.id as 'agenzie_id', agenzie.ragsoc as 'agenzie_ragsoc', visite.data as 'data', visite.idag as 'idag', agenzie.id as 'idagenzia' from visite, agenzie, giver where giver.mail='$giver' AND agenzie.provincia='$provincia' AND agenzie.id!=visite.idag AND agenzie.città like '%$città%' AND giver.idag=agenzie.id group by agenzie.ragsoc order by agenzie.ragsoc";

    praticamente mi deve scrivere il nome dell'agenzia se il suo id nn compare nella tabella visite come campo idag. Ho messo where agenzie.id!=visite.idag ma nn funziona come mai? nel senso che scrive cmq il nome dell'agenzia

  2. #2
    per prima cosa dovresti togliere le apici dagli alias di campo.

    poi quel != diverso suona malissimo... ma il problema e' pure di comprensione della query.

    Metti la query tra tag code o php...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Codice PHP:
    $search2 "SELECT agenzie.id as agenzie_id, agenzie.ragsoc as agenzie_ragsoc, visite.data as data from agenzie, giver, visite where giver.mail='$giver' AND agenzie.provincia='$provincia' AND agenzie.città like '%$città%' AND giver.idag=agenzie.id group by agenzie.ragsoc order by agenzie.ragsoc";
    $query2 mysql_query($search2);
    while (
    $data mysql_fetch_array($query2)) {

    $date_array=getdate($data[data]);
    if(
    $date_array[year]==$anno) { 

    $search25 "SELECT * from visite where idag='$data[agenzie_id]'";
    $query25 mysql_query($search25);
    $num=mysql_num_rows($query25); 
    Ho risolto così ma nn mi piace molto inoltre vengono fuori troppe query x me, però funziona....

  4. #4
    se funge ..funge..

    Pero' qualcosa suona male lo stesso.

    nella prima query nel from hai agenzie, giver, visite , pero' visite non e' abbinato a nessuna condizione ed estrae la data da cui ricavi l'anno... nella successiva query cerchi i record che corrispondono ad
    agenzie.id

    Potresti mettere questa condizione nella prima query....

    la butto la... nel senso proprio buttata non sapendo com'e' la struttura del db....
    codice:
    $search2 = "SELECT a.id as agenzie_id,
                a.ragsoc as agenzie_ragsoc,
                v.data as data
                from agenzie a,
                left join giver g ON g.idag = a.id
                left join visite v ON v.idag = a.id
                where g.mail = '$giver'
                AND a.provincia = '$provincia'
                AND a.città like '%$città%'
                AND YEAR(v.data) = '$anno'
                group by a.ragsoc
                order by a.ragsoc";
    ti ho messo in grassetto quelle due righe... data la citta' sarebbe gia' scontata la provincia.... pero' avendo tu messo %$citta% (togli quell'accento) magari serve. Tra l'altro perche' %$citta% il primo % dovrebbe essere inutile e anche forse dannoso...

    ma se funziona si tratta solo di cu... fortuna.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    nn l'ho ancora provata però ti ricordo che a me serviva che mi tirasse fuori il nome dell'agenzia se il suo id nn compare nella tabella visite come campo idag mentre tu hai messo se l'id è uguale x le 2 tabelle. anch'io ho messo così però se infatti il $num==0 allora mi scrive, manca una parte di codice che nn ho aggiunto. Mi sa che ci vogliono cmq 2 query e nn si risolve con 1 sola

  6. #6
    Aggiungi una clausola in AND al where... poiche' il left join ti rende tutti i record della tabella di sx e NULL se mancasse la tabella di dx

    left join giver g ON g.idag = a.id
    left join visite v ON v.idag = a.id
    .....
    where .....

    AND v.idag IS NOT NULL
    AND a.id IS NULL



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.