Jump to content
php.lv forumi

Vai iespējams iztikt ar vienu query?


Turecky

Recommended Posts

Sveiki, ceru, ka kāds varēs šo lietiņu izskaidrot vai arī apgaismot, kā to pareizāk izdarīt.

Lieta sekojoša, kā pareizāk izveidot index lapas uzstādījumu?

Tabula:

id

title

content

index_page

 

Ja kolonā index_pagesaliekam, piemēram, visas 0 tad index_page nav neviena, tāpēc vienkārši varam norādīt kura būs index_page, kādam no ierakstiem index_page nomainot uz 1. Situācijā, kad gribu mainīt index_page un piesaistīt to citam ierakstam, tad būtu nepieciešams vai nu vispirms atrast ierakstu, kam index_page ir 1 nomainīt to uz 0 un tad vēlamajam ierakstam uzlikt index_page 1. Vai varbūt to var darīt tā, ka vispirms pārrakstam visus index_page uz 0 un tad vēlamajam ierakstam index_page ieliekam 1. Otrajā gadījumā pieprasījums pie lielākiem apjomiem noteikti būtu ilgāks, bet lieli apjomi nav paredzēti. Un tātad galvenais jautājums, vai iespējams to visu salikt vienā pieprasījumā. Tā kā MySQL guru neesmu, tad varbūt ieteiksiet kādu risinājumu, jo neko labāku par diviem pieprasījumiem izdomāt nevarēju.

Cerams, ka sapratāt ideju. Paldies par atbildēm, ja tādas būs!

Link to comment
Share on other sites

Neliela matemātika. Pieņemu, ka zini gan esošās index lapas id, gan jaunās index lapas id

mysql> create table blahh (id int not null primary key, is_index int);
Query OK, 0 rows affected (0.09 sec)

mysql> insert into blahh values (1, 0), (2, 1), (3, 0);
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from blahh;
+----+----------+
| id | is_index |
+----+----------+
|  1 |        0 |
|  2 |        1 |
|  3 |        0 |
+----+----------+
3 rows in set (0.00 sec)

Tagad pirmajai lapai vajag uzlikt uz 1, otrajai uz nulle

mysql> update blahh set is_index = abs(is_index - 1)
   -> where id in (1, 2);
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from blahh;
+----+----------+
| id | is_index |
+----+----------+
|  1 |        1 |
|  2 |        0 |
|  3 |        0 |
+----+----------+
3 rows in set (0.00 sec)

 

Pieņemu, ka šis ne tuvu nav vienīgais risinājums.

 

Gints Plivna

http://datubazes.wordpress.com/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...