Autor Zpráva
Andrej.B
Profil
zdravim,

mam select na DB na tabulku sklad_material /druhy materialov/ , ktory vyberie podla zadanej klauzuly WHERE... vybera dobre... cca 60 zaznamov ako je spravne.Len by som tam potreboval este jednu podmienku ci sa nachadza ten ktory material aj v druhej tabulke aby si clovek mohol vyberat len ten druh materialu, ktory je aj fyzicky prijaty...
    <?php
                        $result = $conn->query
                        ("
                        SELECT * 
                        FROM 
                        sklad_material 
                        WHERE aktivny_sklad_material = '1' 
                        AND (id_druh_material = '3' 
                        or id_druh_material = '2' 
                        or id_druh_material = '4')
                        ");
                            while ($row = $result->fetch_array()) 
                            {
 
                                echo "<option value=\"".$row["id_material"]."\"";
                                if($row['id_material'] == $_POST[id_top]){ echo ' selected';  } 
                                echo ">".$row["nazov_material"]."</option>\n";
                                /* free result set */
                            }
                        mysqli_free_result($result);    
                    ?>

Rad by som este dal dalsiu WHERE podmienku ci sa nachadza aspon jeden zaznam v tabulke sklad_polozka /druhy na sklade/... Nepotrebujem ukazat vsetky druhy materialu ale len tie co maju vobec nejaky prijaty material... Skusam rozne kombinacie na COUNT(id_material)>0 a podobne ale nevychadza mi to... indexy su na id_material

viac na sqlfiddle.com/#!9/47858d/1

dakujem
Tomášeek
Profil
Andrej.B:
Snad jsem to na tabletu rozluštil správně.

Důležité je JOINem tu druhou tabulku přidat do dotazu, pak s ní můžeš dále pracovat (ať už v ON klauzuli, nebo ve WHERE). Doplnil jsem aliasy, podstatné jsou však řádky 3-4.

SELECT sm.* 
FROM sklad_material sm
JOIN sklad_polozka sp
  ON sm.id_material = sp.id_material
WHERE sm.aktivny_sklad_material = '1' 
  AND (sm.id_druh_material = '3' 
    OR sm.id_druh_material = '2' 
    OR sm.id_druh_material = '4'
  )
Andrej.B
Profil
Tomášeek:

skual som to nejako tak rozne cez join len vzdy nieco chybalo... cize ta klauzula ON sm.id_material = sp.id_material , vlastne hovori, ze vyber tie hodnoty id_material, co sa nachadza v oboch tabulkach?

A diky, funguje...
Tomášeek
Profil
Andrej.B:
ON říká, na základě jaké podmínky se má JOINovaná tabulka připojit k některé z existujících. Zde shodou okolností je ten sloupec pojmenován stejně, může se napojovat na jakékoliv sloupce.

Mrkni do SQL manuálu, nebo nějaké knihy, tam bude ON popsán v kapitole JOInů.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0