[PHP/MySQL] INSERT subquery

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • dynast
  • Registratie: December 2002
  • Laatst online: 02-08 23:05
Ik wil de tabel mode alleen vullen met berichten als de publish datum(pubDate) niet voorkomt in de tabel mode. Ik gebruik MySQL 5.0 dus subqueries moeten wel lukken. Helaas werkt het en ik weet niet waar het aan ligt. Ik krijg verder geen foutmeldingen.
PHP:
1
2
"INSERT INTO mode (datum, title, description, link)
VALUES ('".strtotime($items[$i]['pubDate'])."', '".$items[$i]['title']."', '".$items[$i]['description']."', '".$items[$i]['link']."' WHERE datum = '".strtotime($items[$i]['pubDate'])."' NOT IN (SELECT datum FROM mode)");

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

volgens mij wil je hier gewoon een keiharde if omheen zetten of ben ik nou gek?

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • dynast
  • Registratie: December 2002
  • Laatst online: 02-08 23:05
SchizoDuckie schreef op dinsdag 12 februari 2008 @ 10:00:
volgens mij wil je hier gewoon een keiharde if omheen zetten of ben ik nou gek?
Het moet toch gewoon met SQL kunnen?

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Sinds wanneer ondersteunt INSERT een 'where' clause en waarom heeft niemand mij verteld over deze toevoeging die als je er een beetje over nadenkt toch echt nergens op slaat?

Met wat moeite zou je het middels een INSERT ... SELECT statement kunnen faken, maar ik zou gewoon zoals SchizoDuckie oppert je business logic in je code houden.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Alex Picard
  • Registratie: November 2005
  • Laatst online: 04-09 11:25
Heb even voor je gekeken in http://dev.mysql.com/doc/refman/5.0/en/insert.html en kon niet vinden dat iets in die richting support. Ben bang dat je er twee query's van moet maken.

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

dynast schreef op dinsdag 12 februari 2008 @ 10:03:
[...]


Het moet toch gewoon met SQL kunnen?
Waarom? SQL is een set-based manipulation taal, die je toestaat om uit te schrijven wat er hoe op welke subset van data moet gebeuren. Wat jij hier vraagt is echter een conditionele kwestie (voeg ik wel of geen rows toe) waar SQL native inderdaad geen ondersteuning voor heeft, omdat het een ondersteunende taal is en de aanroepende taal maar dat soort besluiten moet nemen.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • dynast
  • Registratie: December 2002
  • Laatst online: 02-08 23:05
Vergissing van mijn kant. In ieder geval bedankt voor jullie reacties.

Acties:
  • 0 Henk 'm!

  • InputOutput
  • Registratie: September 2004
  • Laatst online: 18-09 10:52
Volgens mij kan het wel, met de REPLACE INTO MySQL extensie ... werkt hetzelfde als een UPDATE behalve dat als de row niet bestaat die in de where clause wordt aangegeven hij er eentje toevoegd. Wordt meestal gebruikt in constructies waar de WHERE clause een primary key is oid, maar met een beetje gehack en een subquery krijg je zoiets:

REPLACE INTO ..... WHERE datum NOT IN (SELECT datum from ANDERE TABEL)

Of dit werkt ... ik weet het niet zou het moeten proberen ik weet namelijk zo niet uit mijn hoofd of je voor INSERT/UPDATES subqueries mag gebruiken.

En dan nog zou ik het afraden, eenvoudig omdat ik niet hou van de non ANSI-SQL extensies van MySQL ... als je wilt switchen van DB wordt je daar goed ziek van.

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

InputOutput schreef op dinsdag 12 februari 2008 @ 12:59:
En dan nog zou ik het afraden, eenvoudig omdat ik niet hou van de non ANSI-SQL extensies van MySQL ... als je wilt switchen van DB wordt je daar goed ziek van.
Ach, zo ken ik er nog wel een paar die dat hebben :Y) Daar zou ik me echt absoluut niet druk over maken als je niet ansi-sql compatible hoeft te zijn.

Stop uploading passwords to Github!

Pagina: 1