Jump to content
php.lv forumi

sql -> where


NBS

Recommended Posts

Ir te man tāds asp, bet tas nekas. Kas māk sql, būtu ļoti priecīgs, ja kāds varētu palīdzēt.

Problēma tāda, ka ir ielas, kas ir ar vienādiem nosaukumiem, dažādās ēkās.

Bet rādās pie vienas ēkas vienādas ielas.

Selektojot ēku pie ēkas gribu pārbaudīt, piemēram, vai nav vienādi ieraksti un neizvadīt tos.

Piemēram, ir Čaka iela un Čaka iela, bet izvada tikai vienu ierakstu, neviss divus.

 

<%

query = "SELECT s.streetID AS value, s.NAME AS text FROM streets AS s";

if ((new String(Request("rajons"))) != "undefined")

{

query += " LEFT JOIN Buildings AS b ON b.street_ID = s.streetID WHERE b.mkregion = "+ Request("rajons") +" AND s.NAME = s.NAME OR s.streetID NOT IN (SELECT street_ID FROM Buildings)";

}

query += " GROUP BY s.streetID, s.NAME ORDER BY s.NAME";

 

exe = runSQL(query);

while (exe.Eof != true)

{

Response.Write("<option value="+ exe("value") +">"+ exe("text") +"</option>");

exe.MoveNext();

}

%>

Edited by NBS
Link to comment
Share on other sites

Problēma aprakstīta vienkārši burvīgi. Speciāli centies tā, lai neko nevar saprast ?

 

Vārdu sakot vēlos, lai nerāda man vienādas ielas

Piemēram:

 

Pašlaik rāda šādi:

<option>Stirnu iela</option>

<option>Čaka iela</option>

<option>Čaka iela</option>

<option>Zvaigznes iela</option>

 

Vēlos, šādi:

<option>Stirnu iela</option>

<option>Čaka iela</option>

<option>Zvaigznes iela</option>

 

Cerams, būs saprotams, ko vēlos.

Link to comment
Share on other sites

Īsti nesapratu ?

Rakstā vienkāršs SQL Select teikums skaties piemēru nr 2. Iespējams, ka Tev noderētu izlasīt visu rakstu ;)

 

Un jā, ja vēlies lai kāds tavā vietā uzraksta SQL teikumu (kas pēc idejas diez ko labi nav) tad vismaz iedod tabulu specifikācijas, un arī to ko vēlies dabūt. Cilvēki nestradā ar tavām tabulām, tici man viņi nezin tavu tabulu nosaukumus, kolonu nosaukumus, datus ko vēlies dabūt un datus kas ir tabulā.

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Diemžēl manā gadijumā nav unikālie ieraksti :(

s.streetID ir dažādi id, bet s.NAME man dublicējas.

s.Name es nevēlos, lai rāda tos dublikātus.

 

Meiģināsu vēlreiz paskaidrot savu sql:

http://paste.php.lv/7628?lang=asp

 

Man vajadzīga tāda lieta, lai

 

Mana tabula un šādu izvadi veic mans sql:

 

IelasID | IelasNosaukums

1 Čaka iela

2 Čaka iela

3 Blaumaņa iela

4 Ieriķu iela

5 Bauskas iela

6 Bauskas iela

7 G.Astras iela

8 Rudens iela

 

Vēlos:

 

IelasID | IelasNosaukums

1 Čaka iela

3 Blaumaņa iela

4 Ieriķu iela

5 Bauskas iela

7 G.Astras iela

8 Rudens iela

 

Lūdzu, palīdziet.

Link to comment
Share on other sites

Tabula:

CREATE TABLE `streets` (                                
          `id` int(10) unsigned NOT NULL auto_increment,        
          `street` varchar(255) NOT NULL,                       
          PRIMARY KEY  (`id`)                                   
        )

 

Kverijs:

SELECT DISTINCT s.street, (SELECT id FROM streets WHERE street = s.street ORDER BY id ASC LIMIT 1 ) as id 
FROM streets s;

Link to comment
Share on other sites

Tabula:

CREATE TABLE `streets` (                                
          `id` int(10) unsigned NOT NULL auto_increment,        
          `street` varchar(255) NOT NULL,                       
          PRIMARY KEY  (`id`)                                   
        )

 

Kverijs:

SELECT DISTINCT s.street, (SELECT id FROM streets WHERE street = s.street ORDER BY id ASC LIMIT 1  ) as id 
FROM streets s;

 

Diemžēl, nepalīdz manā gadijumā, bet, paldies, par to pašu.

Man nav nekādas iespējas pielietot DISTINCT.

Es pat nezinu, laikam, ar kaut kādiem smirdīgiem if'iem tur jāņemas, jo nav poņas kā to dabūt gatavu ;(

Stūlbais MS SQL :(

Link to comment
Share on other sites

Diemžēl manā gadijumā nav unikālie ieraksti :(

s.streetID ir dažādi id, bet s.NAME man dublicējas.

Tas nav normali .... Katram ielas nosaukumam buutu jabuut savam ID ...

tas ir ... tabulaa saglabaa ielas nosaukumu (kas pats par sevi ir Unikaals) + ID ....

---

Vadot ieksaa adresi , parbaudi vai taads ielas nosaukums jau neeksistee, ja Eksistee njem no Tabulas (peec ID) , ja neeksistee tad Pievieno un talak tas pats kas ieprieks ...

---

edit: vari tachu parbaudiit ar DISTINCT vai s.name nedublejas , nevis peec s.ID ...

Edited by Grey_Wolf
Link to comment
Share on other sites

Tātad 1kārt GreyWolf pareizi saka, ka šādi dati izskatās ļoti aizdomīgi, katrā ziņā šāds tabulu dizains vedināt vedina uz gļukiem.

2kārt - vai tiešām ir tik grūti jau pašā sākumā lieliem burtiem uzrakstīt par _______KĀDU DATUBĀZI_________ iet runa????

var jau būt ka no asp ar neko citu kā MS SQL sakonktēt nevar bet man par to nekas nav zināms. Vobše tagad kad beidzot no Tevis ir izspiests ko Tev tiešām vajag un kad Tu nejauši atklāji mega noslēpumu, ka Tev tomēr ir MS SQL, tad vari mēģināt šādi:

 

CREATE TABLE streets ( 
id int NOT NULL, 
street varchar(255) NOT NULL, 
PRIMARY KEY (id) 
);
insert into streets values (1, 'Čaka');
insert into streets values (2, 'Čaka');
insert into streets values (3, 'Marijas');
insert into streets values (4, 'Antonijas');
insert into streets values (5, 'Antonijas');

select id, street from (
 select row_number() over (partition by street order by street, id) rn, id, street 
 from streets
) as q
where rn = 1
order by id;

1	Čaka
3	Marijas
4	Antonijas

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Ak jā un protams, ka šitais brīnums strādās tikai uz 2005 SQL servera un 2008 (kuram vēl produkcijas versija nav), iespējams, ka 2000 nekas nesanāks...

 

Yeahhhh atliek vēlreiz grūti nopūsties - kāpēc kāpēc ļaudis slēpj šo info - DB+Versija? Vai tad ir tik grūti to jau pašā sākumā skaidri pateikt?

 

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Nu jā, sorry liels, neesmu pieredzējis infu mest iekšā.

Jā, ir MS SQL 2004 serveris.

Gint ļoti smuks kods, bet, diemžēl, ir tāda ķibele:

" 'row_number' is not a recognized function name. "

Link to comment
Share on other sites

×
×
  • Create New...