Jump to content
php.lv forumi

tabulas ierakstu papildināšana


NBS

Recommended Posts

Sveiki, man ir šāda tabula:

 

1 | janis | šmits

2 | juris | kāpostiņš

3 | ivars | menca

4 | kārlis | alnis

 

Kā, lai es ieinsertoju vai atlasu, piemēram, šādi:

 

1 | janis | šmits

2 | juris | kāpostiņš

NULL | Vārds | NULL

3 | ivars | menca

4 | kārlis | alnis

 

Paldies jau savlaicīgi.

Link to comment
Share on other sites

Parastām tabulām nav tāda jēdziena pievienot pa vidu, beigās vai sākumā. Tabulas dati glabājas bāzē kā nu sanāk DBVS tur viņus novietot un pilnīgi nedeterminēti. Tiem NAV NEKĀDAS PREDEFINĒTAS kārtības.

Kārtību var iegūt datus atlasot izmantojot ORDER BY klauzu. Visādi citādi arī datu atlasē NEKĀDA KĀRTĪBA NETIEK GARANTĒTA.

Šai konkrētā gadījumā mākslīgi protams varētu šādu ierakstu pievienot, bet tas viss izskatās ļoti aizdomīgi - piemēram pirmā kolona izskatās pēc identifikatora, kas parasti normālā gadījumā vienmēr ir aizpildīts, līdz ar to kāpēc tas lai būtu NULL?

 

Labāk paskaidro ko Tev patiešām vajag un kāpēc šādi, iespējams, ka ir citi labāki risinājumi.

 

Gints Plivna

http://datubazes.wordpress.com

Edited by Gints Plivna
Link to comment
Share on other sites

Nu jā, ir identity uz ID lauku, bet to jau var slēgt.

 

Man ir šādi dati:

1 | "Mežvidi", Bārbeles pag., Vecumnieku nov., LV-3905 | 5

2 | "Krieviņi", Bārbeles pag., Vecumnieku nov., LV-3905 | 6

3 | "Dzērvēni", Bārbeles pag., Vecumnieku nov., LV-3905 | 2

4 | "Mūrnieki", Bārbeles pag., Vecumnieku nov., LV-3905 | 2

5 | "Zvēri", Bārbeles pag., Vecumnieku nov., LV-3905 | 4

6 | Pionieru iela 6, Bauska, Bauskas nov., LV-3901 | 3

7 | Zemgaļu iela 27, Bauska, Bauskas nov., LV-3901 | 4

8 | Bērzu iela 9, Bauska, Bauskas nov., LV-3901 | 6

9 | Dārza iela 38, Bauska, Bauskas nov., LV-3901 | 2

10 | Liepu iela 6, Bauska, Bauskas nov., LV-3901 | 1

 

Vajag rezultātā iegūt šādus datus:

NULL | Bārbeles pagasts | NULL

1 | "Mežvidi", Bārbeles pag., Vecumnieku nov., LV-3905 | 5

2 | "Krieviņi", Bārbeles pag., Vecumnieku nov., LV-3905 | 6

3 | "Dzērvēni", Bārbeles pag., Vecumnieku nov., LV-3905 | 2

4 | "Mūrnieki", Bārbeles pag., Vecumnieku nov., LV-3905 | 2

5 | "Zvēri", Bārbeles pag., Vecumnieku nov., LV-3905 | 4

NULL | Bauska | NULL

6 | Pionieru iela 6, Bauska, Bauskas nov., LV-3901 | 3

7 | Zemgaļu iela 27, Bauska, Bauskas nov., LV-3901 | 4

8 | Bērzu iela 9, Bauska, Bauskas nov., LV-3901 | 6

9 | Dārza iela 38, Bauska, Bauskas nov., LV-3901 | 2

10 | Liepu iela 6, Bauska, Bauskas nov., LV-3901 | 1

Link to comment
Share on other sites

Nu paga, bet tas taču ir tikai kaut kāds viens attēlošanas veids, kur acīmredzot datus attēlo grupētus pa pagastu/pilsētu?

Vai, piedod par izteicienu, Tu tiešām vēlies "izdrāzt datus", lai tiktu galā tikai ar šo vienu reizi, kad Tev šos datus vajag attēlot tieši šādi?

 

Tātad 1kārt šeit būtu jādomā nevis par datu pievienošanu, bet par to kā tos attēlot grupētus vajadzīgajā veidā.

2kārt uz šo brīdi izskatās, ka kārtošana notiek pēc idiem, bet vai tiešām mūžīgi būs tā, ka visi ieraksti jau pēc IDIEM būs grupēti pēc tā pagasta/pilsētās? T.i., kas notiks, ja tālāk ievadīs ierakstu ar id = 11, kuram adrese atkal būs tas bārbeles pagasts?

3kārt cik uzticami ir tas, ka adreses tiek vienmēr pierakstītas šādā formā, ka no otrā līdz trešajam komatam ir tā reālā teksta daļa pēc kuras vajag grupēt?

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Jā, man tikai šoreizi vajag tos datus tā attēlot.

Tur nekas nemainīsies un dati netiks pievienoti klāt.

Pašlaik nekas netiek grupēts vienkārši izvadīts rezultāts.

Pats īsti nesaprotu kā šo visu var dabūt gatavu tpc arī forumā rakstu.

Link to comment
Share on other sites

Nu nenormāli šaubīgi tas viss izskatās, apmēram tikpat šaubīgi kā šis selekts :)

 

mysql> desc qwe
   -> ;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | int(11)      | YES  |     | NULL    |       |
| adrese | varchar(100) | YES  |     | NULL    |       |
| col1   | int(11)      | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
3 rows in set (0.03 sec)

mysql> select * from qwe;
+------+-----------------------------------------------------+------+
| id   | adrese                                              | col1 |
+------+-----------------------------------------------------+------+
|    1 | "Mezvidi", Barbeles pag., Vecumnieku nov., LV-3905  |    5 |
|    2 | "Krievini", Barbeles pag., Vecumnieku nov., LV-3905 |    6 |
|    6 | Pionieru iela 6, Bauska, Bauskas nov., LV-3901      |    3 |
+------+-----------------------------------------------------+------+
3 rows in set (0.00 sec)

mysql> select id, ifnull(adrese, p), col1
   -> from (
   ->   select id, adrese, p, col1
   ->   from (
   ->     select id, adrese, col1,
   ->     substring_index(substring_index(adrese, ',', 2), ',', -1) as p
   ->     from qwe) as q
   ->   group by p, id, adrese, col1 with rollup
   -> ) as q1
   -> where id IS NOT NULL AND adrese IS NOT NULL AND col1 IS NOT NULL
   ->    or id IS NULL AND adrese IS NULL AND col1 IS NULL AND p IS NOT NULL
   -> ORDER BY p, id;
+------+-----------------------------------------------------+------+
| id   | ifnull(adrese, p)                                   | col1 |
+------+-----------------------------------------------------+------+
| NULL |  Barbeles pag.                                      | NULL |
|    1 | "Mezvidi", Barbeles pag., Vecumnieku nov., LV-3905  |    5 |
|    2 | "Krievini", Barbeles pag., Vecumnieku nov., LV-3905 |    6 |
| NULL |  Bauska                                             | NULL |
|    6 | Pionieru iela 6, Bauska, Bauskas nov., LV-3901      |    3 |
+------+-----------------------------------------------------+------+
5 rows in set (0.00 sec)

 

Gints Plivna

http://datubazes.wordpress.com

Edited by Gints Plivna
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...