Fastest way to find parents with only one child?

I have two very large tables (both >6 million rows) in an oracle 8i DB. They have a parent child relationship and I would like to construct a query to give me the parents that have only one child......syntactically, what's the best way to construct this query?
I was going to try:
select join_id
FROM parent
where join_id in (select join_id, count(join_id)
FROM child
group by join_id
having count(*)=1)
but then I realized that the subselect has two columns to return and the primary query is only expecting one column, so this will not work.
I suspect there's a quick and dirty way to find out what parents have only one child....
I thought of using rowid's but am not sure this is the best way and in the example below I tried, I'm having problems b/c of functions not being allowed in the where clause.....
select join_id
from child d
where rowid in (select min(rowid)
          FROM child s
          WHERE min(d.rowid)=max(s.rowid)
          AND s.join_id=d.join_id))
Any thoughts?

The two tables are order_header and order_detail. The order_header carries order specific information and the detail contains item specific information.
So if you had ordered three separate products, you would have:
one row in the order_header table (parent)
and three rows in the order_detail table (child)
They are linked by order_number.
I presented the problem this way to make it more accessible to more posters.....;)
One possible solution that I've thought of for my problem is this:
select join_id
from child_table d
where (d.rowid, d.rowid) IN (select min(rowid) MIN_ROW
               ,max(rowid) MAX_ROW
               FROM child_table
               WHERE s.str_order_number=d.str_order_number
               AND s.date>='30-JAN-2005'
               AND s.date<='31-JAN-2005'))
I think this might work because I think that we can safely assume that if the minimum rowid and the maximum rowid (with the same join_id ) are the same then there is only one child record.....is this logic correct?

Similar Messages

  • Level/Generation of members with only one child

    Hello!I have a little problem with generations and levels in an outline like this: Dimension Member1 Member1a Member1b Member2 Member2a Member3 Member3a Member3b"Member2" has only the child "Member2a". All other members in generation 2 have more than one member. The function @CURGEN(Dimension) shows for all these members the value 2, but for the member "Member2" it shows generation 3 and level 0. In my opinion "Member2" is generation 2 and level 1.Who is wrong? Essbase? Thanks for your support!Andreas

    This is the classic 'implied share' gotcha. When a member has only one child, Essbase by default sets up the child as a shared member to the parent. I believe this was an attempt to save space etc. but it causes problems in @ functions and partitions (and maybe elsewhere!). You need to tag the parent (level 1) member as 'never share'. This should solve it.

  • ASO MDX IsLevel weirds result when a parent with only a child

    Hi,
    I am using the function IsLevel but I find funny results when I apply it with a parent member with only a child.
    The result of the function is the level of the child
    I am doing it in Essbase 11.1.2.2
    Has anyone had the same issue?

    Hi Tim,
    It is true, it is an implied share issue.
    With the parent as never share works.
    I don't remember that it happens with BSO, not with the attributes of the members (level, generation, UDA).

  • SELECT to find records with only one word

    What function should I use to find all rows where a particular column has only one word in it? It's a 'Contact Person' column, but the data there is not neccessarily First Name space Last Name...

    If your definition of "One Word" means that the column doesn't contain a space,
    you could do something like this:
    select * from YourTable
    where Instr(Trim(ContactPerson), ' ') = 0;Message was edited by:
    dccase

  • METAREAD filter with dimension with only one child

    Hello !
    We have a big problem with our security
    Our dimension :
    =Dim1
    =>Child1
    =>Child2
    => Child2.1
    => Child2.1.1
    => INFO - member level 0
    =>Child3
    We have need to give to all the dim "no_access" except to Child2.1.1
    We use meta_read on '@IDESCENDANTS("Child2.1")
    The result give "#no_access" to all the dimension because "Child2" have only child
    with a retreive we have :
    =Dim1 #no_access
    =>Child2 #no_access
    => Child2.1 #no_access
    => Child2.1.1 #no_access
    => INFO - member level 0 #no_access
    A solution ?
    Thanks a lot !!
    Regards

    Maybe it is an implied share issue which would depend on the property settings on the members, have you tried setting the property of the members to "Never Share".
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • I was trying to add an itunes library to my computer, and now my itunes library can not be found. An ipod can be synced with only one iTunes library at a time. How can I find my Itunes library, complete with playlists ?

    I was trying to add an itunes library to my computer, and now my itunes library can not be found. An ipod can be synced with only one iTunes library at a time. How can I find my Itunes library, complete with playlists ?

    I have the same problem too and tried alot of things like time zone , restarting or changing DNS of wifi connection to 8.8.8.8 still nothing happens .. !!
    iPhone 5s, iOS 8.3

  • SQL Server 2012 Undetected Deadlock in a table with only one row

      We have migrated our SQL 2000 Enterprise Database to SQL 2012 Enterprise few days ago.
      This is our main database, so most of the applications access it.
      The day after the migration, when users started to run tasks, the database access started to experiment a total failure.
      That is, all processes in the SQL 2k12 database were in lock with each other. This is a commom case of deadlock, but the Database Engine was unable to detect it.
      After some research, we found that the applications were trying to access a very simple table with only one row. This table has a number that is restarted every day and is used to number all the transactions made against the system.   So, client
    applications start a new transaction, get the current number, increment it by one and commit the transaction.
      The only solution we found was to kill all user processes in SQL Server every time this situation occurs (no more than 5 minutes when all clients are accessing the database).
      No client application was changed in this migration and this process was working very well for the last 10 years.
      The problem is that SQL 2k12 is unable to handle this situation compared to SQL 2k.
      It seems to occurs with other tables too, but as this is an "entry table" the problem occurs with it first.
      I have searched internet and some suggest some workarounds like using table hints to completely lock the table at the begining of the transaction, but it can't be used to other tables.
      Does anyone have heard this to be a problem with SQL 2k12? Is there any fixes to make SQL 2k12 as good as SQL 2k?

    First off re: "Unfortunatelly, this can't be used in production environment as exclusive table lock would serialize the accesses to tables and there will be other tables that will suffer with this problem."
    This is incorrect. 
    Using a table to generate sequence numbers like this is a bad idea exactly because the access must be serialized.  Since you can't switch to a SEQUENCE object, which is the correct solution, the _entire goal_ of this exercise to find a way to properly
    serialize access to this table.  Using exclusive locking will not be necessary for all the tables; just for the single-row table used for generating sequence values with a cursor.
    I converted the sample program to VB.NET:
    Public Class Form1
    Private mbCancel As Boolean = False
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim soConn As ADODB.Connection
    Dim soRst As ADODB.Recordset
    Dim sdData As Date
    Dim slValue As Long
    Dim slDelay As Long
    'create database vbtest
    'go
    ' CREATE TABLE [dbo].[ControlNumTest](
    ' [UltData] [datetime] NOT NULL,
    ' [UltNum] [int] NOT NULL,
    ' CONSTRAINT [PK_CorreioNumTeste] PRIMARY KEY CLUSTERED
    ' [UltData] Asc
    ' )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
    ' ) ON [PRIMARY]
    mbCancel = False
    Do
    ' Configure the Connection object
    soConn = New ADODB.Connection
    With soConn
    .ConnectionString = "Provider=SQLNCLI11;Initial Catalog=vbtest;Data Source=localhost;trusted_connection=yes"
    .IsolationLevel = ADODB.IsolationLevelEnum.adXactCursorStability
    .Mode = ADODB.ConnectModeEnum.adModeReadWrite
    .CursorLocation = ADODB.CursorLocationEnum.adUseServer
    .Open()
    End With
    ' Start a new transaction
    Call soConn.BeginTrans()
    ' Configure the RecordSet object
    soRst = New ADODB.Recordset
    With soRst
    .ActiveConnection = soConn
    .CursorLocation = ADODB.CursorLocationEnum.adUseServer
    .CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly
    .LockType = ADODB.LockTypeEnum.adLockPessimistic
    .Open("SELECT * FROM dbo.ControlNumTest")
    End With
    With soRst
    sdData = .Fields!UltData.Value ' Read the last Date (LOCK INFO 1: See comments bello
    slValue = .Fields!UltNum.Value ' Read the last Number
    If sdData <> Date.Now.Date Then ' Date has changed?
    sdData = Date.Now.Date
    slValue = 1 ' Restart number
    End If
    .Fields!UltData.Value = sdData ' Update data
    .Fields!UltNum.Value = slValue + 1 ' Next number
    End With
    Call soRst.Update()
    Call soRst.Close()
    ' Ends the transaction
    Call soConn.CommitTrans()
    Call soConn.Close()
    soRst = Nothing
    soConn = Nothing
    txtUltNum.Text = slValue + 1 ' Display the last number
    Application.DoEvents()
    slDelay = Int(((Rnd * 250) + 100) / 100) * 100
    System.Threading.Thread.Sleep(slDelay)
    Loop While mbCancel = False
    If mbCancel = True Then
    Call MsgBox("The test was canceled")
    End If
    Exit Sub
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    mbCancel = True
    End Sub
    End Class
    And created the table
    CREATE TABLE [dbo].[ControlNumTest](
    [UltData] [datetime] NOT NULL,
    [UltNum] [int] NOT NULL,
    CONSTRAINT [PK_CorreioNumTeste] PRIMARY KEY CLUSTERED
    [UltData] Asc
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = on, FILLFACTOR = 80) ON [PRIMARY]
    ) ON [PRIMARY]
    go insert into ControlNumTest values (cast(getdate()as date),1)
    Then ran 3 copies of the program and generated the deadlock:
    <deadlock>
    <victim-list>
    <victimProcess id="processf27b1498" />
    </victim-list>
    <process-list>
    <process id="processf27b1498" taskpriority="0" logused="0" waitresource="KEY: 35:72057594039042048 (a01df6b954ad)" waittime="1970" ownerId="3181" transactionname="implicit_transaction" lasttranstarted="2014-02-14T15:49:31.263" XDES="0xf04da3a8" lockMode="X" schedulerid="4" kpid="9700" status="suspended" spid="51" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2014-02-14T15:49:31.267" lastbatchcompleted="2014-02-14T15:49:31.267" lastattention="1900-01-01T00:00:00.267" clientapp="vbt" hostname="DBROWNE2" hostpid="21152" loginname="NORTHAMERICA\dbrowne" isolationlevel="read committed (2)" xactid="3181" currentdb="35" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058">
    <executionStack>
    <frame procname="adhoc" line="1" stmtstart="80" sqlhandle="0x020000008376181f3ad0ea908fe9d8593f2e3ced9882f5c90000000000000000000000000000000000000000">
    UPDATE [dbo].[ControlNumTest] SET [UltData]=@Param000004,[UltNum]=@Param000005 </frame>
    <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
    unknown </frame>
    </executionStack>
    <inputbuf>
    (@Param000004 datetime,@Param000005 int)UPDATE [dbo].[ControlNumTest] SET [UltData]=@Param000004,[UltNum]=@Param000005 </inputbuf>
    </process>
    <process id="processf6ac9498" taskpriority="0" logused="10000" waitresource="KEY: 35:72057594039042048 (a01df6b954ad)" waittime="1971" schedulerid="5" kpid="30516" status="suspended" spid="55" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2014-02-14T15:49:31.267" lastbatchcompleted="2014-02-14T15:49:31.267" lastattention="1900-01-01T00:00:00.267" clientapp="vbt" hostname="DBROWNE2" hostpid="27852" loginname="NORTHAMERICA\dbrowne" isolationlevel="read committed (2)" xactid="3182" currentdb="35" lockTimeout="4294967295" clientoption1="671156256" clientoption2="128058">
    <executionStack>
    <frame procname="adhoc" line="1" sqlhandle="0x020000003c6309232ab0edbe0a7790a816a09c4c5ac6f43c0000000000000000000000000000000000000000">
    FETCH API_CURSOR0000000000000001 </frame>
    <frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
    unknown </frame>
    </executionStack>
    <inputbuf>
    FETCH API_CURSOR0000000000000001 </inputbuf>
    </process>
    </process-list>
    <resource-list>
    <keylock hobtid="72057594039042048" dbid="35" objectname="vbtest.dbo.ControlNumTest" indexname="PK_CorreioNumTeste" id="lockff6e6c80" mode="U" associatedObjectId="72057594039042048">
    <owner-list>
    <owner id="processf6ac9498" mode="S" />
    <owner id="processf6ac9498" mode="U" requestType="wait" />
    </owner-list>
    <waiter-list>
    <waiter id="processf27b1498" mode="X" requestType="convert" />
    </waiter-list>
    </keylock>
    <keylock hobtid="72057594039042048" dbid="35" objectname="vbtest.dbo.ControlNumTest" indexname="PK_CorreioNumTeste" id="lockff6e6c80" mode="U" associatedObjectId="72057594039042048">
    <owner-list>
    <owner id="processf27b1498" mode="U" />
    <owner id="processf27b1498" mode="U" />
    <owner id="processf27b1498" mode="X" requestType="convert" />
    </owner-list>
    <waiter-list>
    <waiter id="processf6ac9498" mode="U" requestType="wait" />
    </waiter-list>
    </keylock>
    </resource-list>
    </deadlock>
    It's the S lock that comes from the cursor read that's the villian here.  U locks are compatible with S locks, so one session gets a U lock and another gets an S lock.  But then the session with an S needs a U, and the session with a U needs an
    X.  Deadlock. 
    I'm not sure what kind of locks were taken by this cursor code on SQL 2000, but on SQL 2012, this code is absolutely broken and should deadlock.
    The right way to fix this code is to add (UPDLOCK,SERIALIZABLE) to the cursor
    .Open("SELECT * FROM dbo.ControlNumTest with (updlock,serializable)")
    So each session reads the table with a restrictive lock, and you don't mix S, U and X locks in this transaction.  This resolves the deadlock, but requires a code change.
    I tried several things that didn't require a code, which did not resolve the deadlock;
    1) setting ALLOW_ROW_LOCKS=OFF ALLOW_PAGE_LOCKS=OFF
    2) SERIALIZABLE isolation level
    3) Switching OleDB providers from SQLOLEDB to SQLNCLI11
    Then I replaced the table with a view containing a lock hint:
    CREATE TABLE [dbo].[ControlNumTest_t](
    [UltData] [datetime] NOT NULL,
    [UltNum] [int] NOT NULL,
    CONSTRAINT [PK_CorreioNumTeste] PRIMARY KEY CLUSTERED
    [UltData] Asc
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = on, FILLFACTOR = 80) ON [PRIMARY]
    ) ON [PRIMARY]
    go
    create view ControlNumTest as
    select * from ControlNumTest_t with (tablockx)
    Which, at least in my limited testing, resovlved the deadlock without any client code change.
    David
    David http://blogs.msdn.com/b/dbrowne/

  • HT204088 How how can I synch my ipod + iphone music to my new computer? I get the same error  "my ipod or iphone is synched with another itunes library.An Ipod can be synched with only one itunes library at a time. What would I like to do Erase and Synch

    How can I synch my ipod & iphone music (purchased from itunes on my old laptop) to my new laptop? I keep getting the same message on my itunes on my new laptop: " The ipod/Iphone is synched with another itunes library. An ipod/iphone can be synched with only one itunes library at a time. What would you like to do - Erase and Synch or Transfer Purchases?" What do I do?
    A couple of other items:
    1) I am guessing Apple does not keep a history of all my music purchases? As I did not have my entire library backed-up anywhere, and relying on the music I have on my ipod and my iphone as my only source of itunes music....I have lost over 500 songs!!!
    2) I used to have an Apple account under another account name, and since have switched to a new account name. Is there anyway to find the history of purchases from my old Apple account name and transfer these over to my new account name and onto my new laptop?
    I hope someone can help, I am having a very difficult time trying to obtain answers. Angie

    The iphone/ipod is NOT a storage/backup device.  Not maintaining a backup copy is a big mistake.
    You can transfer itunes purchases from your iphone/ipod to your computer:
    Authorize your computer for all accounts and then click  File>Transfer Purchases

  • How to connect many devices with only one FW800 port in iMac?

    Hi,
    I am upgrading to a new Intel iMac from a 2004 vintage Dual2.0GHz PowerMac. I currently have 8x d2 Quadra drives chained by FW800, and 2x Iomega drives connected vis FW400 hub which also connects HD cams.
    My questions is that with only one FW800 port in iMac, I think my devices connectivity is the following?
    (1) Get a FW 800 hub (I can only find 2 port ones at the Apple store and BestBuy)
    (2) Connect the d2 Quadras to one port of the FW800 hub
    (3) Get a FW 800 to FW 400 cable
    (4) Connect my 6 port FW400 hub to the 2nd port of the FW800 hub
    Thanks for reviewing this solution, and I would also appreciate other suggestions or hear about your experiences if you have a similar set-up.
    Will

    In addition to your listed considerations, you should consider the following.
    Many storage needs do not required FireWire 800 speed. For example, USB 2.0 works fine for your Time Machine backup drive. If you are just storing user data such as your iPhoto or iTunes media files, USB 2.0 is more than fast enough. So, as much as possible, if any of those external drives have USB 2.0 connections and the data storage does not need FireWire 800 speed, offload as much as possible to USB 2.0. I used to be a +FireWire snob+, but since getting an Intel iMac, I find that USB 2.0 works quite well for most data storage purposes.
    There are new hard drives that are power efficient and as large as 2TB. Consolidate your data storage needs onto a smaller number of very large drives, partitioned as needed. This will make your setup more reliable (smaller number drives), and save reduce power consumption. If any of your current externals are SATA, you can probably replace the existing drive with an extra large one.
    So, I think you setup should be, extra large FireWire 800 drive connected to the FireWire 800 port directly. Using a 9-pin to 6-pin cable, connect the FireWire 400 hub. Connect any non-storage FireWire 400 devices there. Do some data transfer testing to make sure having the 400 hub there on the chain does not cause the 800 connection to slow down.
    Connect other drives as needed using USB 2.0, existing or new. Retire the smaller of your external drives.

  • Nodes with Only One Lower-Level Node = Hide

    Hi everyone
    Have anyone present this situation:
    Iu2019ve a quey to report inventory aging. It has two hierarchies to show data. In Rows I have Major Markets and in Columns a date hierarchy to show aging Ex: from 0 to 8 months, 9+ and 13+. Of course here I have also value and volume.
    Query reports all values for all major markets fine. When I filter one major market, letu2019s say France also brings detailed figures but when I add any drill down in rows all values goes to cero (0).
    Te estrange is that if you swap drill down order with major markets or drill down by columns with the same characteristic figures come out again as usual.
    I know this sounds like a SAP note but I have not been able to find it either.
    Thanks a lot for your help, and of course points will be assignedu2026..
    Ps. Important, this happen when  option u201CNodes with Only One Lower-Level Node = Hideu201D (this is selected on purpose because there are some repeated nodes in major market hierarchy Ex. France u2013 France and if there is just one value under first node then means that only display of last one is necessary to avoid repeated values).

    Solution we found is to remove flag "Do not display leaves for inner-nodes in the query", directly on the hierarchy.
    Thanks

  • Is there a way to find out how long my child has been playing with my ipad

    Is there a way to find out how long my child has been playing with my ipad???  He has been getting up before me in the morning and in the evening he is super tired and I'm wondering how early he has been getting up????

    No way to see exactly how long the iPad has been used but you may want to consider using parental controls.
    iOS: Understanding Restrictions (parental controls)

  • How to make 1D Array but with only one element filled in Real Time

    Hi folks,
    here I am with another question. I want to implement an prediction discrete state space observer which is going to run on a CRIO real time target. I am going to do it just like in the example which comes with LV.
    I have some questions regarding the input and outputs which in the example those are "dummy".
    My model is a SISO model, but the function "Construct SS model" returns parameters (A,B,C,D Matrices) as 2D arrays, so once you connect the cluster model into the Discrete Observer model, it takes y and u as 1D arrays despite of the fact that there is a SISO model.
    I realized that the function I am using in the simulations, uses 1D arrays but with only one element filled:
    Does anyone knows how to implement such 1D arrays in Real Time? I guess the way to do it is preallocating one array of zeros of size 1, and then recirculating it through some SR, and replacing the element with my real input and output, but at the dummy.vi, they are using a simple "build array"
    function.

    Ok, I did it that way. But I am facing another problem right now...
    At some point the Discrete Observer return a NAN array, you will see the code in the code snippet?
    I get rid of that component by component, but the observer gets "stuck" in it. So my Control law is zero... but the state stimate is NAN.
    Also I am attaching the VI.
    I do not know why, since in the simulation program all runs well. any thoughts? Maybe the internal numeric precision of the State Space Model?
    Attachments:
    RT - Pole Placement + Complete Observer.vi ‏40 KB

  • Load balancing with only one Real Server on CSM

    Other than create a VSERVER with only one real server in it - is there a way of load balancing when you have only one real server now and may be additional servers to be added later?

    the only way is to use the vserver.
    Gilles.

  • Counting (interneal timebase)events with only one counter

    Hello,
    i am using a PXI-6115 card. This card is external clocked with 8 MHz. But I want to measure only about every second. So I divided the external clock with the internal counter 0. This works fine.
    Now my problem. Now I want to know the external clock rate. Is it possible to build a pulse period measurement with only one counter??
    I thinking of counting internal timebase- pulses with counter 1 and to start and stop the counter 1 by the output of counter 0.
    Is this possible and how??
    Thanks for help, Ruediger

    Yes, there's a way to measure pulse periods with a single counter. The trick is to perform a buffered period measurement and sum the periods. The size of the buffer will determine the quantization/roundoff error.
    The source of this error is that you have no control over the initial phase relationship of your external clock and your internal timebase. There's a nominal ratio between the two frequencies, and you'd start by expecting ratio * (buffer size) total cycles counted.
    However, your actual count must be an integer, so you'll get either the next-highest or next-lowest integer, but you can't predict or control which one.
    Example: If you collect 1 period at 8 MHz using the internal 20 MHz timebase, you'll capture either 2 or 3 e
    dges from your timebase, implying a measured frequency of either 10 MHz or 6.6667 MHz.
    If you collect 1001 periods, you'll capture a total of 2502 or 2503 timebase edges, implying a measured frequency of either 8.0016 MHz or 7.9984 MHz.
    Notes:
    1. In many cases, you can set up for buffered event counting, using the internal 20 MHz clock as a source and your external 8 MHz as a gate.
    The advantage is that the buffered values already represent cumulative time so you don't need to sum them.
    A disadvantage would be that the internal 24-bit counter value will roll-over in less than 1 second at 20 MHz. I typically capture periods and then sum in software because I can convert to floating point between capture and sum if necessary to produce both high-resolution and long duration measurements.
    2. You should typically ignore the very first value in the buffer and work only with the others. If you want to capture 1001 legitimate periods, size the buffer for at least 1002
    -Kevin P.

  • Multiple events per date with only one photo each - Unwanted

    I have the eyefi wireless sd card in my camera and it is setup to transmit my photos into iphoto automatically, which it does. However, the problem arises in that iphoto creates multiple events for the same date each containing only one photo. I would prefer that iphoto create individual events per date and have the multiples of that date's photos within. I thought I had the settings configured to do so as I have preferences set for autosplit events one per day but I still see events such as - July 3, 2008 - July 3, 2008 - July 3, 2008 - each with only one photo inside.
    I am wondering if it is something in iphoto's settings or the way in which eyefi transmits the photos into iphoto.
    Any thoughts?

    I do not have a WiFi connection to my camera so can not test but am just guessing
    I can think of two possibilities
    - 1 - if you are taking the photos with the WiFi connected then each time you snap a photo it may be being sent which would be looked at as a new import and therefore create a new event - to stop this I believe you would have to not have a full time WiFi connection to your camera or somehow set the camera to send batched - not each one - iPhoto will take each batch into and follow the rules for making events for that batch even if you camera is sending many batches of One photo
    - 2 - You have the preference for making batches set to one every two hours and there is a long time between photos - I'm guessing that #1 is more likely
    LN

Maybe you are looking for