[SQL] Nieuw toegevoegde presentaties weergeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arjan -

Arjan -

30/03/2011 17:58:11
Quote Anchor link
Hey,

Door middel van onderstaande query probeer ik te controleren op nieuw toegevoegde (inactieve) presentaties.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
            bedrijf_id, MAX(presentatie_id)
            FROM
                presentaties p
            WHERE
                presentatie_actief = '0'
            AND presentatie_toegevoegd >
                (
                 SELECT presentatie_toegevoegd
                 FROM presentaties
                 WHERE presentatie_actief = '1'
                 AND bedrijf_id = p.bedrijf_id
                )
            GROUP BY
                bedrijf_id
            ORDER BY
                presentatie_id DESC


Wat dus de bedoeling is, is dat binnen de tabel "presentaties" gekeken wordt of er nieuwe presentaties zijn toegevoegd. Elke gewijzigde presentatie wordt als een nieuwe presentatie toegevoegd om zodoende gemakkelijk terug te kunnen naar eerder opgeslagen presentaties.

Met bovenstaande query werkt het allemaal goed, behalve wanneer er maar één presentatie van een bedrijf in de database staat en deze op inactief staat (presentatie_actief = '0'). Dit is te wijten aan de conditie "presentatie_toegevoegd > .....". Hier wordt namelijk niet aan voldoen in het geval van één inactieve presentatie.

Maar ik heb vooralsnog geen oplossing voor handen voor dit probleem. Heeft iemand enig idee hoe ik deze query ook werkend kan krijgen voor één inactieve presentatie?

Alvast bedankt!
Gewijzigd op 30/03/2011 18:00:50 door Arjan -
 
PHP hulp

PHP hulp

27/01/2020 05:48:48
 
Noppes Homeland

Noppes Homeland

30/03/2011 18:15:40
Quote Anchor link
Ja en wat wil je nu dan, want je blaat een eind weg, maar je verteld ons niet duidelijk genoeg wat je nu als resultaat verwacht.

Je spreekt je ook nog eens tegen "Elke gewijzigde presentatie wordt als een nieuwe presentatie toegevoegd"

Dat kan niet... als een presentatie gewijzigd wordt dan zit ie dus al in de database tabel, als je deze opnieuw zal toevoegen zal dat niet moeten kunnen.

En bekijk in vredesnaam ook je query eens met EXPLAIN, want deze query is niet om vooruit te branden
 
Arjan -

Arjan -

30/03/2011 18:39:41
Quote Anchor link
Poehee, wat zijn wij weer agressief vandaag. En ik blaat geen eind weg, aangezien ik duidelijk heb aangegeven dat elke presentatie dat gewijzigd wordt door de eigenaar, een nieuwe record krijgt in de database om zodoende de controle te houden over wijzigingen in presentaties. Als je te eigenwijs bent om dit te snappen dan vraag ik je niet (meer) te reageren. Of ga lekker een paar uurtjes in de zandbak spelen, wellicht koel je dan weer een beetje af!

Als resultaat verwacht ik een getal (en later ook meerdere velden) dat het aantal nieuwe en gewijzigde presentaties weergeeft.

Dus een nieuw bedrijf X voert een presentatie in, deze bevat een waarde presentatie_actief = 0.

Bedrijf Y heeft al een presentatie toegevoegd, maar wil wijzigingen aanbrengen in haar presentatie. Na het wijzigen wordt een nieuwe record toegevoegd met de huidige timestamp (DATETIME veld in mysql) en een status presentatie_actief = '0'.

Deze wijzigingen cq toevoegingen wil ik met behulp van een query ophalen. Dus alle presentaties waarbij de status presentatie_actief op 0 staat.

En ik weet dat de query niet al te best presteert met grote hoeveelheden aan data, maar ik kan op dit moment geen betere query verzinnen (vandaar dus ook deze vraag)?
Gewijzigd op 30/03/2011 18:45:22 door Arjan -
 
Noppes Homeland

Noppes Homeland

30/03/2011 19:15:07
Quote Anchor link
Quote:
ik duidelijk heb aangegeven dat elke presentatie dat gewijzigd wordt door de eigenaar, een nieuwe record krijgt in de database om zodoende de controle te houden over wijzigingen in presentaties

Je kan een presentatie die in de database staat niet nog eens toevoegen dat zal moeten leiden tot duplicate key, als dat niet het geval is steekt het niet goed in elkaar, zoook je query niet goed is.

Zo en nu heb je toch zelf opgeschreven hoe de query er in principe uit zal moeten zien. Aanschouw het nog maals en produceer een query die wel doet wat je wilt.
 
Arjan -

Arjan -

30/03/2011 20:05:47
Quote Anchor link
Kijk: De eigenaar (bedrijf) van een presentatie moet de mogelijkheid hebben om een bestaande presentatie te wijzigen. Echter moeten deze wijzigingen wel eerst goedgekeurd worden om deze presentatie op de website weer te geven. Nu leek het mij handig om de gewijzigde presentatie als een nieuw record in de database toe te voegen om controle te houden over alle presentaties. Elke presentatie is gekoppeld aan één bedrijf, waardoor in de database meerdere presentaties aan een bedrijf gekoppeld zijn, waarbij echter maar één presentatie actief is.

Ik begrijp dat normaal gesproken een wijzigingen in een presentatie gewoon een UPDATE query nodig heeft om de wijzigingen door te voeren, maar ik wil juist die extra controle hebben om wijzigingen door bedrijven niet direct zichtbaar te laten zijn op de website.

Hoe kan ik dit op een andere manier doen dan? Want volgens mij is dit de eenvoudigste en effectiefste methode of zie ik het verkeerd? Of kan ik het beste met een parent_id werken, echter zie ik daar nu de voordelen niet van in?

Bedankt in ieder geval voor je reactie!
Gewijzigd op 30/03/2011 20:07:16 door Arjan -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.