Flere limits i sammen sql sætning?

Tags:    mysqli mysql sql php limit

<< < 12 > >>
Hej :)

Er det muligt at have flere limits i samme sql-sætning?

Har fx denne kode, hvor jeg gerne vil have en limit på min post, så det ikke er alle posts, som bliver udtrukket fra databasen, men kun den første?
Kode:
Fold kodeboks ind/udKode 


På forhånd tak for hjælpen.



15 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Du kan vist nok lave en 'inner select' i SQL, så du på den måde kan lave limit. Er ikke helt sikker på hvordan det gøres, men mener at man kan gøre noget alla dette
Fold kodeboks ind/udSQL kode 

Som sagt er jeg ikke sikker på koden, men mener at man kan gøre noget i den stil



Indlæg senest redigeret d. 25.04.2012 19:29 af Bruger #4487
Så burde løsningen være, at lave det som en subquery

Noget i den her retning:
Fold kodeboks ind/udSQL kode 

Er ikke testet og kræver sikkert noget tilpasning.

EDIT: Tilpasset lidt, efter inspiration fra Martins forslag.





Indlæg senest redigeret d. 25.04.2012 19:36 af Bruger #955
Tak for jeres svar.

Tanken er nu mere, at den enkelte første post høre med til topics overskrift, hvis man kan forklare det på den måde.

Derfor tænker jeg at man kunne lave en limit med 1, og hvor post_id høre til topic_id, som her:

Fold kodeboks ind/udKode 


Men her kommer fejlen:
Unknown column 'topics.topic_id' in 'where clause'

Det kan man måske ikke??



Den where du har inde i subqueryen kender ikke tabellen topics. Men jeg tror du kan gøre det nemmere, i det tilfælde du kun vil have den første.

Hvis jeg har gennemskuet din tabelstruktur korrekt, vil jeg gætte på, at du kan holde dig til dit oprindelige setup og tilføje DISTINCT til dit topic id.

SELECT DISTINCT topics.topic_id, ....





DISTINCT virker desværre ikke i denne sammenhæng, da hver den samme overskrift med samme url også bliver skrevet ud :)



Hvis du viser et diagram for din database. ER/EER diagram. Så bliver det meget nemmere at hjælpe dig.



Hmm.. Jeg ved ikke lige hvad et ER/EER diagram er, men jeg kan vise strukturen i sql:

`topics` (
`topic_id` int(8) NOT NULL auto_increment,
`topic_subject` varchar(255) collate utf8_danish_ci NOT NULL,
`topic_date` datetime NOT NULL,
`topic_cat` int(8) NOT NULL,
`topic_by` int(8) NOT NULL,
`topic_page_cat` int(11) NOT NULL,
`images` varchar(10000) collate utf8_danish_ci NOT NULL,
PRIMARY KEY (`topic_id`),
KEY `topic_cat` (`topic_cat`),
KEY `topic_by` (`topic_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=88 ;


`posts` (
`post_id` int(8) NOT NULL auto_increment,
`post_content` text collate utf8_danish_ci NOT NULL,
`post_date` datetime NOT NULL,
`post_topic` int(8) NOT NULL,
`post_by` int(8) NOT NULL,
`posts_cat` int(11) NOT NULL,
`posts_cat_page` int(11) NOT NULL,
PRIMARY KEY (`post_id`),
KEY `post_topic` (`post_topic`),
KEY `post_by` (`post_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=121 ;¨




Jeg er lidt i tvivl om din left og right join. For mit eget vedkommen, bliver jeg nød til at vide lidt mere om hvad det er du prøver at hive ud af databasen for at forstå din sql-query.

Da en left eller right join ikke nødvendigvis giver et specifikt udtræk. Men er mere bred spekteret. Kan også se at du har en brugere tabel, kan du også poste den da det muligvis kunne gøre det nemmere at gennemskue hvad du forsøger.

Læs evt om hvad et ER diagram er her.
http://en.wikipedia.org/wiki/Entity-relationship_model

Det er guld værd når man skal have hjælp til f.eks sådan noget her.

Når man designer databaser, så er det god skik at gennemgå (det er kedeligt men hjælper en del) 4 faser.

ER Diagram.
EER Diagram.
RD Skema.
Normalisering (helst til trejdle normaliserings form).

Dette er med til at fjerne eventuelle fejl som har lusket sig med, i ide fasen. Er med til at give et bedre flow igennem databasen og er med til at fjerne overflødig data.



Indlæg senest redigeret d. 26.04.2012 21:08 af Bruger #16700
Okay. Det skal jeg vist lige sætte mig lidt mere end i, før jeg ville prøve at lave et, så det ikke er forkert.

Jeg kan lige forklare, hvad det egentligt er jeg vil, så er det måske en smule lettere at hjælpe.

Jeg har disse 4 tabeller:
Fold kodeboks ind/udKode 


Det er egentligt meget simpelt. Jeg har en kategori, hvor jeg har har liste med alle indlæg. På denne side skal der kun vises 15 af dem - jeg har selv lavet et pagination-system til det, så det er ikke noget problem.

Det, der så skal udhentes er:
- topics.topic_id - Så url'en er korrekt.
- topics.topic_subject - Overskriften
- topics.topic_date - Datoen
- posts.post_content - men det skal være den første post, som hænger tråd med topics, så man kan læse det første indlæg uden at skulle ind i emnet.
- brugere.name - navnet på ham, som har oprettet emnet.


Med Steffans kode(længere oppe^) virkede det næsten, men det var posterne fra sidste topic til alle emner, som blev postet i browseren.

Jeg håber det hjalp lidt.





Indlæg senest redigeret d. 26.04.2012 21:57 af Bruger #15747
Det må være noget lign. dette måske:
Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 27.04.2012 09:53 af Bruger #10216
<< < 12 > >>
t