Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + odbc] left outer join
Forum PHP.pl > Forum > Przedszkole
mdamiano2pl
witam,
mam zapytanie do serwera SQL (odbc):

  1. SELECT INDEKS_T."MAG", INDEKS_T."NR_PZ", INDEKS_T."RR", INDEKS_T."STAN_P", INDEKS_T."CENA_AKT" ,INDEKS_T."CENA_WALT", INDEKS_T."IL_P", NAZ_TOW."NAZWA"
  2. FROM GM.INDEKS_T
  3. INDEKS_T
  4. LEFT OUTER JOIN GM.NAZ_TOW NAZ_TOW ON INDEKS_T."BRAN" = NAZ_TOW."BRAN" AND INDEKS_T."POD_BRAN" = NAZ_TOW."POD_BRAN" AND INDEKS_T."ASORT" = NAZ_TOW."ASORT" AND INDEKS_T."TOWAR" = NAZ_TOW."TOWAR"
  5. LEFT OUTER JOIN GM.NAWAZ NAWAZ_USAGE2 ON INDEKS_T."KOD_N" = NAWAZ_USAGE2."KOD"
  6. LEFT OUTER JOIN GM.JEDN_M JEDN_M_USAGE3 ON INDEKS_T."JM" = JEDN_M_USAGE3."KOD"
  7. WHERE INDEKS_T.MAG = '01'
  8. ORDER BY INDEKS_T.MAG, INDEKS_T.BRAN, INDEKS_T.POD_BRAN,
  9. INDEKS_T.ASORT, INDEKS_T.TOWAR, INDEKS_T.KOD_N, INDEKS_T.NR_PZ, INDEKS_T.RR
i prosze uzywac bbcode. poprawiam /nospor/
Jak zmusic php do wykonania tego zapytania - czytalem ze Left outer join trzeba uzywac w {oj (..)} ale wszystkie proby koncza sie "pusta" strona www.

pozdrawiam,
Damian
nospor
php Pro to żes zaszalal smile.gif
http://pl.php.net/manual/pl/function.mysql-query.php
i inne z tej rodziny smile.gif

Przenosze na przedszkole
mdamiano2pl
to akurat nie jest my_sql - Sybase ASA9, dlatego kozystam z driverow ODBC
nospor
no to skoro korzystasz z ODBC to rownież polecam manuala:
http://pl.php.net/manual/pl/function.odbc-exec.php

a jesli masz konkrety, to pokaz kod jak probowales, bo moze tam bledy popelniles

edit: i nie krzycz w tytule. popraw proszę
mdamiano2pl
W kodzie raczej bledu nie ma. Jedno z zapytan bez Outer Joinow wykonuje sie dobrze:
  1. <html>
  2. <body>
  3.  
  4. <?php
  5. $z_rok=$_POST['rok'];
  6. $z_mc=$_POST['mc'];
  7. $z_dzial=$_POST['dzial'];
  8. $z_kontrah=$_POST['kontrah'];
  9.  
  10. $conn=odbc_connect('bheuro','','');
  11. if (!$conn)
  12.   {exit("Connection Failed: " . $conn);}
  13. $sql="
  14. select fakturav.nr_f, kod_o, kontrah.nazwa as naz_kontr, TOWAR_V.ILOSC_Z as ilos
    c,TOWAR_V.CENA_EW as cenaew,TOWAR_V.CENA_NET as cenane, naz_tow.nazwa as naztow 
  15. from gm.FAKTURAV, gm.towar_v, gm.naz_tow, gm.kontrah
  16. where fakturav.nr_f = towar_v.nr_f and towar_v.towar=naz_tow.towar and fakturav.
    kod_o=kontrah.kod and fakturav.dzial=towar_v.dzial 
  17. and fakturav.dzial=$z_dzial and fakturav.rr=$z_rok and fakturav.mc=$z_mc and fak
    turav.kod_o=$z_kontrah 
  18.  
  19. ";
  20. $rs=odbc_exec($conn,$sql);
  21. if (!$rs)
  22.   {exit("Error in SQL");}
  23. echo "<table border=1><tr>";
  24. echo "<th>nrumer_faktury</th>";
  25. echo "<th>kod_odbiorcy</th>";
  26. echo "<th>nazwa_kontrahenta</th>";
  27. echo "<th>ilość</th>";
  28. echo "<th>cena_ewidencyjna</th>";
  29. echo "<th>cena_netto</th>";
  30. echo "<th>nazwa_towaru</th></tr>";
  31. while (odbc_fetch_row($rs))
  32. {
  33.   $nr_f=odbc_result($rs,"nr_f");
  34.   $kod_o=odbc_result($rs,"kod_o");
  35.   $nazwa_kontrah=odbc_result($rs,"naz_kontr");
  36.   $ilosc=odbc_result($rs,"ilosc");
  37.   $cenaew=odbc_result($rs,"cenaew");
  38.   $cenane=odbc_result($rs,"cenane");
  39.   $naztow=odbc_result($rs,"naztow");
  40.   echo "<tr><td>$nr_f</td>";
  41.   echo "<td>$kod_o</td>";
  42.   echo "<td>$nazwa_kontrah</td>";
  43.   echo "<td>$ilosc</td>";
  44.   echo "<td>$cenaew</td>";
  45.   echo "<td>$cenane</td>";
  46.   echo "<td>$naztow</td></tr>";
  47.  
  48. }
  49. odbc_close($conn);
  50. echo "</table>";
  51. ?>
  52. <br>
  53. <form name="form1" method="post" action="index.php">
  54.   <input type="submit" name="Submit" value="POWROT">
  55. </form>
  56. </body>
  57. </html>


To zapytanie dziala poprawnie, jezeli jest wykonane w ISQL Sybasa, wiez skonstru
owane jest dobrze - problemem jest przeniesienie tego do php.
Tak wyglada skrypt:
  1. <html>
  2. <body>
  3.  
  4. <?php
  5. $z_rok=$_POST['rok'];
  6. $z_mc=$_POST['mc'];
  7. $z_dzial=$_POST['dzial'];
  8. $z_kontrah=$_POST['kontrah'];
  9.  
  10. $conn=odbc_connect('bheuro','','');
  11. if (!$conn)
  12.   {exit("Connection Failed: " . $conn);}
  13. $sql="
  14.  
  15. SELECT INDEKS_T."MAG",  INDEKS_T."NR_PZ", INDEKS_T."RR", INDEKS_T."STAN_P", INDEKS_T."CENA_AKT"
  16. ,INDEKS_T."CENA_WALT", INDEKS_T."IL_P", NAZ_TOW."NAZWA"
  17. FROM GM.INDEKS_T INDEKS_T 
  18. LEFT OUTER JOIN GM.NAZ_TOW NAZ_TOW ON INDEKS_T."BRAN" = NAZ_TOW."BRAN" AND INDEKS_T."POD_BRAN" = NAZ_TOW."POD_BRAN" AND INDEKS_T."ASORT" = NAZ_TOW."ASORT" AND INDEKS_T."TOWAR" = NAZ_TOW."TOWAR
  19. LEFT OUTER JOIN GM.NAWAZ NAWAZ_USAGE2 ON INDEKS_T."KOD_N" = NAWAZ_USAGE2."KOD")
  20. LEFT OUTER JOINGM.JEDN_M JEDN_M_USAGE3 ON INDEKS_T."JM" = JEDN_M_USAGE3."KOD
  21. WHERE
  22. INDEKS_T.MAG = '01' 
  23. ORDER BY INDEKS_T.MAG, INDEKS_T.BRAN, INDEKS_T.POD_BRAN,
  24. INDEKS_T.ASORT, INDEKS_T.TOWAR, INDEKS_T.KOD_N, INDEKS_T.NR_PZ, INDEKS_T.RR
  25.  
  26.  
  27. ";
  28. $rs=odbc_exec($conn,$sql);
  29. if (!$rs)
  30.   {exit("Error in SQL");}
  31. echo "<table border=1><tr>";
  32. echo "<th>magazyn</th></tr>";
  33. while (odbc_fetch_row($rs))
  34. {
  35.   $mag=odbc_result($rs,"mag");
  36.   
  37.   echo "<tr><td>$mag</td>";
  38.   
  39.  
  40. }
  41. odbc_close($conn);
  42. echo "</table>";
  43. ?>
  44. <br>
  45. <form name="form1" method="post" action="index.php">
  46.   <input type="submit" name="Submit" value="POWROT">
  47. </form>
  48. </body>
  49. </html>


poprawiam
---
nospor
nospor
no i widzisz. w kodzie jednak masz bledy. polecam lekture:
http://pl.php.net/manual/pl/language.types.string.php
aby dowiedziec jak wstawiac do tekstu " (cudzyslow).

ps: prosze jeszcze raz o poprawe tytulu na niekrzyczacy
ps2: prosze o uzywanie bbcode
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.