Slettet bruger
15. marts 2005 - 16:40
Der er
23 kommentarer og 1 løsning
alt fra én tabel der ikke er i en anden :S
Jeg har 2 tabeller: cykler | c_f (står for: cykler_forhandler i c_f er der 3 kolonner: cykelid | forhandlerid | pris Jeg vil gerne have en query hvor jeg får alle cykler der _ikke_ tilhører mig (logget ind, $_SESSION['brugerid'] er mit forhandlerid). Jeg vil gerne have det i én query
Annonceindlæg fra Computerworld
15. marts 2005 - 16:43
#1
SELECT * FROM cykler WHERE id not IN SELECT cykelid FROM c_f
15. marts 2005 - 16:43
#2
Jeg er ikke up-to-date med MySQL, men mon ikke den på nyværende tidspunkt understøtter sub-selects? :-)
Slettet bruger
15. marts 2005 - 16:45
#3
den siger fejl ved "SELECT cykelid FROM c_f"
15. marts 2005 - 16:50
#4
Nej, der er ikke subselects i den aktuelle version (jeg bøvlede med den ovre i php-kategorien)
15. marts 2005 - 16:50
#5
Konstruktionen kræver MySQL 4.1. I ældre versioner: SELECT cykler.* FROM cykler LEFT JOIN c_f ON cykler.id = c_f.cykelid AND c_f.forhandlerid = X WHERE c_f.cykelid IS NULL
Slettet bruger
15. marts 2005 - 17:01
#6
mange tak arne_v, det virker præcis som det skal Smid svar tak :o)
15. marts 2005 - 17:09
#7
Aij, jeg var sikker på, at jeg havde været igennem den version og fået den forkastet også - ih altså, nu nægter jeg ikke at kunne finde ud af det igen!
Slettet bruger
15. marts 2005 - 17:09
#8
Kan det lade sig gøre at lave en query der gør følgende: Finder alle cykler jeg har og sætter prisen til min pris De rækker jeg ikke har skal have "NULL" som pris, men skal stadig være med
Slettet bruger
15. marts 2005 - 17:10
#9
Hehe barklund, vi havde prøvet så mange gange, og så kan arne så utrolig hurtigt :P
15. marts 2005 - 17:15
#10
Den sidste kan jeg vist godt - det er jo bare en left join: SELECT cykler.id, c_f.pris FROM cykler LEFT JOIN c_f ON cykler.id = c_f.cykelid AND c_f.forhandlerid = X
15. marts 2005 - 17:45
#11
svar
15. marts 2005 - 17:46
#12
det sidste spørgsmål skal jeg lige have forklaret lidt nærmere
Slettet bruger
15. marts 2005 - 17:50
#13
Jeg vil gerne have en liste med alle cyklerne. dette kan nemt gøres med en SELECT * FROM c_f GROUP BY cykelid MEN.. jeg vil gerne have at alle cykler JEG har skal have _min_ pris, mens cykler jeg _ikke_ har skal have NULL som pris håber at du forstår
Slettet bruger
15. marts 2005 - 17:52
#14
Men det er egentlig ligemeget arne, tak for hjælpen :) jeg har lavet en SELECT * FROM c_f GROUP BY cykelid, og så senere sagt med en "if" set om jeg har prisen :)
15. marts 2005 - 17:56
#15
Men det er da præcis hvad en left join gør? SELECT cykler.id, c_f.pris FROM cykler LEFT JOIN c_f ON cykler.id = c_f.cykelid AND c_f.forhandlerid = X Eller er jeg helt galt på den?
Slettet bruger
15. marts 2005 - 17:58
#16
hmm du er lidt gal på den.. for det første skal jeg ikke bruge en join, idet jeg jo har cyklens id i c_f.cykelid :) og for det andet skal jeg jo også have de cykler med som jeg ikke selv har :)
15. marts 2005 - 18:20
#17
Men virker ovenstående join ikke som forventet?
Slettet bruger
15. marts 2005 - 18:26
#18
ikke som det jeg skal bruge, den giver mig ikke de rækker der ikke har mig som forhandler
15. marts 2005 - 23:11
#19
Måske er det: SELECT cykelid,forhandlerid,IF(forhandlerid=X,pris,NULL) FROM c_f GROUP BY cykelid, du leder efter ?
Slettet bruger
16. marts 2005 - 14:50
#20
lige præcis :) bruger du ét bestemt sted på nettet hvor du leder efter dine queries osv, (udover manualen) så jeg måske også kunne lære lidt. :o)
Slettet bruger
16. marts 2005 - 16:17
#21
Hmm nej det virker ikke, den finder ikke pris: $query = " SELECT cykelid as id, IF(forhandlerid=". $_SESSION['brugerid'] .",pris,NULL) FROM c_f GROUP BY id"; der er "pris" tom
16. marts 2005 - 17:07
#22
$query = " SELECT cykelid as id, IF(forhandlerid=". $_SESSION['brugerid'] .",pris,NULL) AS pris2 FROM c_f GROUP BY id"; of så henter du feltet pris2 ud af query resulatet
16. marts 2005 - 17:08
#23
MySQL dokumentationen er online på nettet. (og så har jeg mere end 15 års erfaring med SQL og har også på et tidspunkt undervist i det)
Slettet bruger
16. marts 2005 - 20:05
#24
hehe, de 15 år har nok en rimelig stor betydning. Mange tak arne_v :)
Computerworld tilbyder specialiserede kurser i database-management