Avatar billede Lasse Novice
22. juli 2000 - 21:19 Der er 30 kommentarer og
2 løsninger

TOTAL SORT

Jeg har en database lavet i MySQL.

I den har jeg en tabel kaldet lande. Den tabel har to attributter:
lande
  landID (pri. nøgle)
  land

OK, her er problemet. Jeg laver en søgning med sætningen:

SELECT * from lande where (landID=19 and land=\'danmark\');

den giver mig ét resultat, hvilket den også skal.

Søger jeg med denne sætning:
SELECT * from lande where land=\'danmark\';

får jeg INTET resultat. DET FATTER JEG IKKE EN METER AF! Er der nogen der lige kan forklare mig det???
Avatar billede nerdyguy Nybegynder
23. juli 2000 - 00:06 #1
Det er en \'forkert\' søgesætning.

Mit svar lyder:
SELECT * from lande where land like \'%danmark%\';

Jeg har en søgefunktion med den sætning, og den virker efter signe.


MVH....... NØRDEN!
Avatar billede nerdyguy Nybegynder
23. juli 2000 - 00:09 #2
Og forresten....

SELECT * from lande where (landID=19 and land=\'danmark\');

Kan du efter min mening nøjes med:
SELECT * from lande where landID=\'19\';
Avatar billede nerdyguy Nybegynder
23. juli 2000 - 00:24 #3
Hvis du prøver at søge i de gamle poster, så kan du finde adskillige søgefunktioner. Nogle mere avancerede end andre........ Min POINT:

Prøv at søge før du spørger ;-)

Ikke fordi jeg selv er go\' til det.... HEHE!


Nå, bare lige det ;-)
Avatar billede Lasse Novice
23. juli 2000 - 03:46 #4
ja, jeg ved godt at man kan nøjes med at søge på landid, men nu er det sådan at jeg ikke ved hvad landID er for det specifikke land. Derfor kan JEG IKKE bare søge på landID.

Hvad angår din snak om forkert søgesætning, så er det også helt ude i skoven. Når man bruger \"like\", så søger du på ord(i dette tilfælde) der indeholder ordet Danmark, et eks:

lortDanmarklort

vil være postivt resultat.

Og til din sidste antydning om at jeg burde søge viden andetsteds.... Det har jeg gjort, det er bla. derfor jeg spørger her!
Avatar billede Lasse Novice
23. juli 2000 - 03:47 #5
hmm, det lød vist lidt hårdt, det var ikke lige ment sådan... :-)
Avatar billede Lasse Novice
23. juli 2000 - 03:52 #6
det skal siges at jeg IKKE er dårlig til SQL...

Men dette problem fatter jeg ikke en meter af....
Avatar billede nerdyguy Nybegynder
23. juli 2000 - 03:57 #7
Jaah!
Jeg prøver bare at hjælpe.
Jeg kan se, at jeg ikke har fattet dit spørgsmål.

Grunden til at dette ikke giver resultat:
SELECT * from lande where land=\'danmark\';
Og:
SELECT * from lande where (landID=19 and land=\'danmark\');
Gør kan jeg ikke svare dig på. Men jeg kan komme med nogle foreslag!

Nej..... Nu jeg tænker over det, så kan jeg ikke ;-(

Aner ikke hvorfor ...... PIS!

Det skal virke!
Avatar billede Lasse Novice
23. juli 2000 - 12:37 #8
sorry, ja det er også min konklusion at det skal virke. Bortset fra det så virker det at lave en sql sætning således:

SELECT * from lande where land like \'danmark%\';

men det er bare mærkeligt at denne sql sætning så giver det samme resultat(SORT):

SELECT * from lande where (landID=19 and land=\'danmark\');

når denne ikke giver noget:

SELECT * from lande where land=\'danmark\';

Jeg tror at der er en fejl i MySQL...

Avatar billede nerdyguy Nybegynder
23. juli 2000 - 12:45 #9
Ja, det kan være...  ;-)
Avatar billede nerdyguy Nybegynder
23. juli 2000 - 20:42 #10
Så må du jo trække pointene tilbage........
Avatar billede erikjacobsen Ekspert
23. juli 2000 - 20:56 #11
Nej, nej, selvfølgelig er det ikke fejl i MySql på det punkt. Så var der ikke
rigtig noget overhovedet, der ville virke. Kan du ikke give os lidt flere
oplysninger, så vi har en chance for at hjælpe dig.

Hvad er SQL-sætningen, der definerer din tabel? Kan du give os et
eksempel på indholdet?
Avatar billede Lasse Novice
23. juli 2000 - 21:52 #12
ja, det kan jeg godt...skønt jeg ikke syntes det er nødvendigt.

i ALLE programmeringssprog, hvis:

landID=19 and land=\'danmark\'

er sandt,ja så er:

land=\'danmark\'

også sandt.

Men her er min SQL sætning der definerer tabellen:

create table lande (
landID tinyint(3) not null auto_increment,
land varchar(20) not null,
primary key (landID),
key (land));

Det jeg henter ind ligger i en semikolon sepereret fil. Den indlæses ved følgende sætning:
load data infile \'lande.txt\' into table herlevkollegiet.lande fields terminated by \';\';

filen er bygget op således:
1;Afghanistan
2;Albanien
3;Algeriet
4;Argentina
5;Armenien
6;Australien
7;Azerbaijan
8;Bangladesh
9;Belgien
10;Bosnien Herzegovina
11;Brazilien
12;Bulgarien
13;Cambodia
...
...
...
osv.
Avatar billede Lasse Novice
23. juli 2000 - 22:01 #13
kan det have noget med at gøre at jeg ikke fortæller hvornår linien er slut i min SQL sætning?
Avatar billede erikjacobsen Ekspert
23. juli 2000 - 22:40 #14
Ok, det ser fornuftigt ud. Det ligner det lille eksperiment, som jeg lavede.
Dog uden Cambodia...

Hvordan laver du din SQL-sætning? I PHP? Eller phpmyadmin? Eller
den Mysql-kommandolinie-tingest?
Avatar billede erikjacobsen Ekspert
23. juli 2000 - 22:42 #15
PS: Nej, det har ikke noget at gøre med \"linie slut\" - og ja, selvfølgelig opfører
alle programmeringssprog sig sådan, som du beskriver. Nu skal vi bare have
fundet ud af hvad der er galt!
Avatar billede Lasse Novice
23. juli 2000 - 22:53 #16
Jeg har prøvet både i Mysql-kommandolinie og i PHP med samme resultat.

Det sjove er at, se:
Kommentar fra gooky 
23-07 2000 12:37:57 

Jeg fatter ikke en meter af det! Bortset fra det, så har jeg løst problemet på en anden måde, men det ville ikke være sådan man gjorde ude i erhverslivet... men det er jeg selvfølgelig heller ikke.

Men bortset fra det, så er problemet jo SÅ GRUNDLÆGGENDE... derfor håber jeg virkelig at svaret ligger et sted, der ligger uden for alm. viden.
Avatar billede erikjacobsen Ekspert
23. juli 2000 - 23:37 #17
Jeg kan ikke reproducere det. Er det noget der kan tilgås via nettet?
Avatar billede Lasse Novice
23. juli 2000 - 23:39 #18
nej desværre, det er intranet.

Hvis du har en email adresse, kan jeg sende filen + sql sætningen!!!
Avatar billede nerdyguy Nybegynder
23. juli 2000 - 23:48 #19
Måske skulle man lave et eksempel til stakkels gooky ;-)

Jeg har en masse der virker ... Var det noget?
Avatar billede Lasse Novice
23. juli 2000 - 23:52 #20
nerdyguy>>hehe, du tror jeg er dårlig til det her, men det er jeg skam ikke....
Kom med noget kvalitet istedet for det der intetsigende nonsens du prædiker med.
Avatar billede nerdyguy Nybegynder
23. juli 2000 - 23:56 #21
Tak for den kommentar!
Avatar billede Lasse Novice
23. juli 2000 - 23:58 #22
ja men du sviner jo mig til, og det er ikke lige noget jeg finder mest interessant. Jeg refererer selvfølgelig her til:
Kommentar fra nerdyguy 
23-07 2000 23:48:07 
Avatar billede erikjacobsen Ekspert
24. juli 2000 - 00:27 #23
Tjah, jeg har sql-sætningen, og jeg har sat et par stykker ind af dine
lande - også Cambodia nu. Så jeg tror ikke du kan sende mig noget
nyt.

Er der andre, der har ideer?
Avatar billede Lasse Novice
24. juli 2000 - 00:29 #24
ok, er det ikke mærkeligt? eller ja, det ER mærkeligt
Avatar billede nerdyguy Nybegynder
24. juli 2000 - 00:40 #25
Gookey ->> Undskyld

NerdyGuy er meget ked af det, han har gjort.

Jeg har et eksempel til dig som virker. Men du vil vel ikke have det ;-)
Avatar billede Lasse Novice
24. juli 2000 - 00:46 #26
nååhh, det vil jeg nu ikke sige, og hvis du har løsningen på problemet er der 50 point oveni, men kun hvis det er en løsning på problemet, og ikke en helt ny løsning...

men jeg er stadig interesseret i din løsning
Avatar billede Lasse Novice
24. juli 2000 - 16:35 #27
nerdyguy>>ok, alt forladt. Jeg er MEGET interesseret i din løsning
Avatar billede Lasse Novice
24. juli 2000 - 16:47 #28
ja, jeg har selv fundet ud af HVORFOR dette er opstået....

Avatar billede Lasse Novice
24. juli 2000 - 16:50 #29
lav et svar og i får 1/3 af pointene hver - for jeres besvær
Avatar billede nerdyguy Nybegynder
24. juli 2000 - 16:53 #30
Sig så hvordan det er gået til !
Avatar billede erikjacobsen Ekspert
24. juli 2000 - 20:47 #31
Ja, jeg vil kun have point, hvis vi får at vide hvad der var galt ;-))
Avatar billede Lasse Novice
25. juli 2000 - 00:18 #32
Jeg har siddet og revet hårene udpå mig selv i snart... ja lang tid.

Så blev jeg enig med mig selv om, at jeg ville prøve at sætte en værdi ind i tabellen på helt elementær måde(ikke noget med at hente fra en fil)... Derefter lavede jeg den samme søgning(som har givet mig problemer), og med ét, gav det resultat. Det var MÆRKELIGT tænke jeg.
Så kiggede jeg lidt på dette svar:
Kommentar fra gooky 
23-07 2000 22:01:09 

og blev enig med mig selv at undersøge det nærmere. Jeg tror at du erikjakobsen har misforstået det jeg skrev der. Den linie jeg omtaler der, er HVER linie i den semikolon sepereret fil.

Jeg lavede en ny tabel med lande, og skrev følgende SQL sætning:
load data infile \'lande.txt\' into table herlevkollegiet.lande fields terminated by \';\' LINES TERMINATED BY \'\\r\\n\';

og med ét forsvandt ALLE mine problemer...

Jeg har dog stadig ikke fundet ud af HVORFOR den \"AND SQL-sætning\" ikke fungerer - jeg mistænker MySQL for at have en fejl.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester